a不能作为左值!这个错误几乎每一个学生都犯过。编译器会认为数组名作为左值代表的意思是a的首元素的首地址,但是这个地址开始的一块内存是一个总体,我们只能访问数组的某个元素,而无法把数组当做一个总体进行访问。所以我们可以把a[i]当左值,而无法把a当左值。其实我们完全可以把a当做一个普通的变量来看,只不过这...
if(a==1) 是判断a是否等于1,这里a可以为左值,也可以是右值。
首先你要明白数组名是什么,它是一个指针,类型为你所定义的数组的类型,而这个指针与普通定义的指针的最大区别就是它是常指针,意思就是它的值不能被改变,所以不能作为左值被赋值! 例子: int a[9]; int *p; 其中a和p除了一个是常指针之外没有...
因为它期望的是纯右值,但是我们提供的子表达式b是左值,于是就会发生左值到右值的转换。 也就是说表达式...
a屬於左值,因為它可以被賦值的數據對象,它有一個固定的內存地址和變量名。左值是一種可以在表達式之外...
百度试题 结果1 题目变量应当() A. 持有左值 B. 持有右值 C. 既持有左值又持有右值 D. 既不持有左值也不持有右值 相关知识点: 试题来源: 解析 C 反馈 收藏
a++是将一个变量a作为左值,这是可以的。而++(a++)是将a++的值作为右值,常量值是非法的右值,所以不可以。C++中的“++” (自增)、 “--” (自减)运算符是使用方便且效率很高的两个运算符,它们都是一元运算符。这两个运算符都有前置和后置两种使用形式。当“/”用于两整型操作数相除时...
所谓的左值,说通俗一点就是可以被修改和引用的值,左值可以取地址。与之相对的就是右值。在使用时,左值可以作为右值,但右值不能作为左值。 B、D的错误在于无法划分为有效的C/C++运算符 C当然是对的,至于是看作(a++)+b还是a+(++b),个人倾向于前者。因为在计算表达式时,应保证整个运算式的结合性一致。当遇到...
a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1和0x1000也有空间,在程序的常量段存放。p按照...
a做左值时表示整个数组的所有空间(10×4=40字节),又因为C语言规定数组操作时要独立单个操作,不能整体操作数组,所以a不能做左值;a做右值表示数组首元素(数组的第0个元素,也就是a[0])的首地址(首地址就是起始地址,就是4个字节中最开始第一个字节的地址)。a做右值等同于&a[0]; a[0]:表示数组的首元素,...