首页 > 后端开发 > 正文

C语言中左值和右值的区别 关于c语言的一些概述性问题

2023-07-16 10:10:33 | 我爱编程网

C语言中左值和右值的区别

C语言中左值和右值的区别

在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出” left operand must be l-value ” 即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别!

简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=”后边的就是右值,感觉像是废话,但非常好理解。但更多时候,我们是为了学习和理解不同情况下左值和右值的区别,下面来举例依次说明,着层深入,来让大家解渴!

1.变量做左值和右值的区别:

如 x = 2;

这里x为整形变量,这里作为左值,代表的是一块内存单元,表示的是地址。

再如x = y;

现在看变量做右值情况,y做右值,这里呢就不在表示地址,而是代表该内存单元上的值!然后赋给x。

2.常量做左值和右值的区别:

继续 x = 2;

这里2做右值, 2是一个常量,没有任何疑问。

而如果 1 = 2;

这里我们看左值,是1是常量,这里就会有问题了,编译会报错!因为常量不可被修改、不可以被赋值!所以大家可能会听过或见过”可修改/不可修改的左值”。

3.数组名做左值和右值的区别:

例如有字符数组char a[100];

当a做右值时候,我们可以把它赋给char *类型的指针,用来指向这个数组,这种情况下数组名做右值代表该数组首元素的首地址,是常量,是完全可以的。

而数组名无论右值和还是左值,都代表是地址,是常量,因此它不可以做左值,因为常量不可被修改!所以不少同学试图再定义数组之后再试图对数组赋字符串都是错误的!

4.字符串常量做右值

字符串常量想必大家都很清楚,是用双引号括起来的字符串,既然也是常量,也理所当然不可以做左值,但做右值呢?

答案是,会表示该字符串在内存中存储位置的首地址。就就是char *  p = “dotcpp.com”;用法的原因。

 

 

以上四种,希望对大家深入理解左值和右值有帮助!大家有任何问题,请随时留言讨论!

关于c语言的一些概述性问题

关于c语言的一些概述性问题

1.c语言规定,变量命名必须符合标识符的命名规则,例如:float US$ 这样就是错误的,因为出现了非法字符:$
2.在整形常量中,不可包含”,“,比如:1,200
3.指数后面必须为指数;若想要表示字符”\”,应该写为:”\“
4.想要表示字符串常量,应该用双引号表示,如:”cd”,单引号表示字符常量
5.011表示八进制常量,0xabcd表示的是十六进制常量
6.’\0’表示空值,ascll值为0;’0’表示字符0,ascll值为48
7.在c语言中,八进制常量的开头数字是0,十六进制常量的开头数字是0x或0X
8.注意了。。。在e或E前面必须要有数字
9.115L代表的是115是长整型数据,是合法的;八进制常量开头是0而不是字母o
10.在字符赋值中,将”aa”赋予字符变量a是错误的
11.大小写转换公式:1> c =c + 32 ; 2>c =c=c - ‘A’+’a’; 3> c = (c-‘A’)%26 +’a’
12.字符串是用一对双引号括起来的字符序列,并用字符数组来存放
13.c语言中没有逻辑类型
14.若要保存带有多位小数的数据,用单精度可以,双精度也可以
15.整数类型可以无误表示自然数
16.处理包含不同类型的相关数据可以定义为结构体类型
17.c语言的标识符开头必须是字母或下划线,注意:关键字不能当作标识符
18.每个c程序中必须包含一个main函数,但不是每个文件必须有,而且,c程序有函数组成
19.c语言的源程序名后缀:.C , 目标文件的扩展名:.obj , 可执行文件扩展名似:.exe
20.c语言中数值常量不能加空格
21.运算符两边的运算数据类型可以不同,但是,结果与精度较高的保持一致
22.程序,可采用自顶向下,逐步细化的方法
23.运算符%的前后必须是整数
24.取模运算符和二元运算符具有左结合性,参与运算的量都为整型

今天关于c语言概述的总结知识点就到这里了,谢谢大家观看。

   
我爱编程网

与“C语言中左值和右值的区别 关于c语言的一些概述性问题”相关推荐
C语言中左值和右值的区别
C语言中左值和右值的区别

C语言中左值和右值的区别 C语言中左值和右值的区别 在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出”leftoperandmustbel-value”即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=&r

2023-06-26 19:31:06
C语言中左值和右值的区别 驳“C语言无用”论
C语言中左值和右值的区别 驳“C语言无用”论

C语言中左值和右值的区别 C语言中左值和右值的区别 在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出”leftoperandmustbel-value”即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=&r

2023-06-26 19:11:59
关于c语言的一些概述性问题 驳“C语言无用”论
关于c语言的一些概述性问题 驳“C语言无用”论

关于c语言的一些概述性问题 关于c语言的一些概述性问题 1.c语言规定,变量命名必须符合标识符的命名规则,例如:floatUS$这样就是错误的,因为出现了非法字符:$ 2.在整形常量中,不可包含”,“,比如:1,200 3.指数后面必须为指数;若想要表示字符”\”,应该写为:”\“ 4.

2023-07-16 10:26:24
C语言中左值和右值的区别 编程入门为什么要先要学C语言
C语言中左值和右值的区别 编程入门为什么要先要学C语言

C语言中左值和右值的区别 C语言中左值和右值的区别 在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出”leftoperandmustbel-value”即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=&r

2023-06-26 19:30:20
C语言中左值和右值的区别 客评价谭浩强C语言书到底好不好
C语言中左值和右值的区别 客评价谭浩强C语言书到底好不好

C语言中左值和右值的区别 C语言中左值和右值的区别 在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出”leftoperandmustbel-value”即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=&r

2023-06-26 19:28:19
C语言中左值和右值的区别 C语言自定义函数如何返回数组(上)
C语言中左值和右值的区别 C语言自定义函数如何返回数组(上)

C语言中左值和右值的区别 C语言中左值和右值的区别 在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出”leftoperandmustbel-value”即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=&r

2023-06-26 19:18:56
C语言中左值和右值的区别 C语言自定义函数如何返回数组(下)
C语言中左值和右值的区别 C语言自定义函数如何返回数组(下)

C语言中左值和右值的区别 C语言中左值和右值的区别 在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出”leftoperandmustbel-value”即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=&r

2023-06-26 19:22:46
C语言中左值和右值的区别 C语言逆向之表达式短路分析及应用
C语言中左值和右值的区别 C语言逆向之表达式短路分析及应用

C语言中左值和右值的区别 C语言中左值和右值的区别 在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出”leftoperandmustbel-value”即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=&r

2023-06-26 19:19:27