首页 > 后端开发 > 正文

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

2023-06-26 19:31:06 | 我爱编程网

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语言概述的总结知识点就到这里了,谢谢大家观看。

   

更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: C++
与“C语言中左值和右值的区别”相关推荐
java、 C/ C++、 PHP、 Python这些语言有什么区别和联系?
java、 C/ C++、 PHP、 Python这些语言有什么区别和联系?

java、C/C++、PHP、Python这些语言有什么区别和联系?软件开发就是根据用户要求建造出软件系统或者系统中的软件部分的过程。一般是用某种程序设计语言来实现的软件开发的,像Java、Python、2C和C++等都是软件开发的需要的编程语言。看到那么多编程语言,同学又就开始犯嘀咕,这么多,到底学什么?今天听人说Java不错,想学;明天听人说Python前景广,想学;

2025-03-19 10:21:17
c++ 关于time()函数返回值(C语言 timer函数 和time函数)
c++ 关于time()函数返回值(C语言 timer函数 和time函数)

c++关于time()函数返回值在c/c++的time.h头文件中的time函数他的返回值表示:从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。而且他的返回值是个整数(占的64位二进制位)#include <iostream>#include <ctime>using names

2025-03-20 15:15:59
PHP和HTML语言有什么区别
PHP和HTML语言有什么区别

PHP和HTML语言有什么区别简单的说,HTML是典型的静态网络编程用语,而PHP则是一种可实现动态的编程语言。简单举例:<?phpecho"<p>Orderprocessedat".date('H:i,jsFY')."</p>";?>在这段代码中,我们使用PHP语言中内置的函数date()来告诉客户其订单被处理的日期和时间。

2024-10-29 14:34:18
PHP 里url传值(PHP传值,引用和传址的区别)
PHP 里url传值(PHP传值,引用和传址的区别)

PHP里url传值如果form表单提交的时候用了post就要用post来接收,比如说<formmethod="post">用户名:<inputtype="text"name="name"value="">密码:<inputtype="password"name="pwd"value=""><inputtype="submit"valu

2025-03-05 15:17:12
php传值函数吗 PHP中按值传递和引用传递的区别
php传值函数吗 PHP中按值传递和引用传递的区别

PHP里url传值如果form表单提交的时候用了post就要用post来接收,比如说<formmethod="post">用户名:<inputtype="text"name="name"value="">密码:<inputtype="password"name="pwd"value=""><inputtype="submit"valu

2025-03-14 14:36:32
php语言中echo 与print 的区别是什么?
php语言中echo 与print 的区别是什么?

php语言中echo与print的区别是什么?echo是语法结构,也就是关键字,不是函数。使用的时候不用加括号,加上也可以。显示多个值的时候可以用逗号隔开。只支持基本类型,布尔型除外,echotrue的时候显示1,echofalse的时候啥都没有。print和echo基本一致。但是print不支持逗号分隔多个显示变量的语法。print_r是函数,不仅可以打印变量的的值,还能显示变

2024-12-12 12:49:53
python和java和c++哪个更值得学
python和java和c++哪个更值得学

python和java和c++哪个更值得学最好的建议就是学习Python,再不济也是Java或者PHP。但是Python是最好的选择,连潘石屹都选择了学习Python。主要的原因是,Python属于脚本语言,相对来说比较简单一些,而C或者C++相对比较复杂,所以如果你不是职业程序员,学习C++的难度可能要大一些。其次,Python对你的用处比较大一些。即使不做一些专业的AI

2024-02-07 07:47:10
php中const和define的区别 php this和self的区别
php中const和define的区别 php this和self的区别

php中const和define的区别define部分:宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段。(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议。)宏的语法为:#define宏名称宏值作为一种建议和一种广大程序员共同的习惯,宏名称经常使用全部大写的字母。利用宏的优点:1)让代码更简洁明了当然,这有赖于你为宏取一个适当的名字。一

2024-10-16 21:22:23