❶ c語言什麼叫做左值右值
左值就是在賦值中可以放在賦值操作符兩邊的值,比如:
inta=1;
doubleb=2.0
a=b;
b=a;
這里a和b都是左值,一切變數都是左值,但const量是例外。
而右值則是只可以放在賦值操作符右邊的值,比如:
inta=0;
char*b="hello";
3=a;//ERROR
"howdy"=b//ERROR
這里3和"howdy"都是右值,所以不能放在賦值操作符左邊,一切常數、字元和字元串都是右值。
❷ C語言 什麼叫做左值右值
左值,就是指可以被取地址的表達式。簡單的說,可以出現在等號左邊的就是左值。比如:
❸ 關於C語言類型及左值問題
typedef char VertexType[5];
typedef VertexType SElemType;
SElemType屬於char*
改過後
typedef VertexType* SElemType;
SElemType屬於char
*S->top++ = e;
S->top屬於char [5];
e屬於char*
改過後兩邊都是char型
*S->top++取值為char型,然後指針加1
❹ c語言中a能做左值么
如果定義時沒有const 修飾就可以,否則不行
❺ C語言中什麼叫做左值
左值就是在賦值中可以放在賦值操作符兩邊的值,比如:
int a = 1;
double b = 2.0
a = b;
b = a;
這里a和b都是左值,一切變數都是左值,但const變數是例外。
*p是一個左值,和變數一樣,只要在*p的右邊加上賦值運算符,就可改變*p的值。
如果p是一個指向常量的指針,*p就是一個不能修改的左值,即它不能被放到賦值運算符的左邊。
i和 -i 都是表達式
但一個是左值(i),一個是右值(-i)。
++,--這兩種操作符要求作用於左值,所以i++合法,(-i)++不合法。
不嚴謹的講,左值右值的區分在於位於等號的那一側,左側的是左值,通常是一個變數,右側的是右值,可以是一個變數,或者是一個表達式。
❻ C語言問題 關於左值的
前面加include<string.h>
strcpy(tiinf[0].NO, "ZH9658")
❼ C語言,關於左值,右值的概念問題
1、例如:a[3] = 5;*p = 55;
2、非常量的變數空間可以寫入,自然就是左值了
3、右值指的是常量或者比如算術運算的中間結果,只能讀出,不能寫入,當然就是右值了
一般而言,左值是可以作為右值的,左值的本意是只寫,右值的本意是只讀
❽ C語言中的左值究竟是什麼值
❾ c語言中什麼是左值
左值是指可以被賦值的表達式。左值位於賦值語句的左側,與其相對的右值(rvaule,見 1.11)則位於賦值語句的右側。每條賦值語句都必須有一個左值和一個右值。左值必須是內存中一個可存儲的變數,而不能是一個常量.
❿ C語言中左值對象有哪些哪些數據類型或是表達式可以算作是左值!
左值,算是可訪問存儲的區域,要求「可訪問存儲」,那就可改變,變數(很多類型)就是,常數不是,你可以根據這個判斷下左值。
理解下左值對象吧,一般來說是計算機里一塊可訪問可存儲的區域,對象只是這塊區域的抽象標識,變數a,b,*p等都算,只不過按不同的類型分出不同大小的區域。標識可以任意給,所以對象有哪些,舉不完,而對象類型倒是有,什麼int對象,char對象,指針對象等等吧。
既然左值要求的是「可訪問可存儲」,即可找到它改變它,這個則不會關繫到區域大小。而存儲區域大小是靠類型來確定(比如int我分多大內存啊),既然不關繫到大小,與數據類型何干!
有幾個運算符構成的表達式,可以算是左值,不過很少(比如a++;a--;*p等他們可單獨成立,這個我也知道不多,還有sizeof(?)挖一塊?大小的區域),其他的一般都算右值的,因為表達式最後一般都會產生一個不可變的值(比如a+b,最終整個表達式代表一個結果值,不可變,它要賦給一個存儲對象也就是左值),當然左值表達式可以做右值,它本來就存有一個值,可以傳給他人嘛。。。
以前研究過左值,可以一起討論下。。。。。