c语言的赋值运算符
㈠ c语言中的运算符
简单赋值运算符记为“=”,由“= ”连接的式子称为赋值表达式。欢迎大家阅读!更多相关信息请关注相关栏目!
无论是加减乘除还是大于小于,都需要用到运算符,在C语言中的运算符和我们平时用的基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符。大多数运算符都是二目运算符,即运算符位于两个表达式之间。单目运算符的意思是运算符作用于单个表达式。(具体什么是表达式下一节再说)
C语言中的运算符
无论是加减乘除还是大于小于,都需要用到运算符,在C语言中的运算符和我们平时用的基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符。大多数运算符都是二目运算符,即运算符位于两个表达式之间。单目运算符的意思是运算符作用于单个表达式。(具体什么是表达式下一节再说)
一、赋值运算符
赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示。
注意:赋值语句左边的变量在程序的其他地方必须要声明。
得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。常数只能作为右值。
例如:
count=5;
total1=total2=0;
第一个赋值语句大家都能理解。
第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。这样它先total2=0;然后total1=total2;那么我们这样行不行呢?
(total1=total2)=0;
这样是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的。
二、算术运算符
在C语言中有两个单目和五个双目运算符。
符号
功能
单目正
单目负
乘法
除法
取模
加法
减法
下面是一些赋值语句的例子,
在赋值运算符右侧的表达式中就使用了上面的算术运算符:
Area=Height*Width;
num=num1+num2/num3-num4;
运算符也有个运算顺序问题,先算乘除再算加减。单目正和单目负最先运算。
取模运算符(%)用于计算两个整数相除所得的余数。例如:
a=7%4;
最终a的结果是3,因为7%4的余数是3。
那么有人要问了,我要想求它们的商怎么办呢?
b=7/4;
这样b就是它们的商了,应该是1。
也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。要想也得到小数部分,可以这样写7.0/4或者7/4.0,也即把其中一个数变为非整数。
怎样由一个实数得到它的整数部分呢?这就需要用强制类型转换了。例如:
a=(int)
(7.0/4);
因为7.0/4的值为1.75,如果在前面加上(int)就表示把结果强制转换成整型,这就得到了1。那么思考一下a=(float)
(7/4);最终a的结果是多少?
单目减运算符相当于取相反值,若是正值就变为负值,若是负数就变为正值。
单目加运算符没有意义,纯粹是和单目减构成一对用的。
三、逻辑运算符
逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号
功能
&&
逻辑与
逻辑或
逻辑非
例如:
5!3;
0||-2&&5;
!4;
当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若原先为真,则逻辑非以后为假。
还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:
a=2,b=1;
a||b-1;
因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。
四、关系运算符
关系运算符是对两个表达式进行比较,返回一个真/假值。
符号
功能
>
大于
<
小于
>=
大于等于
<=
小于等于
等于
不等于
这些运算符大家都能明白,主要问题就是等于==和赋值=的区别了。
一些刚开始学习C语言的人总是对这两个运算符弄不明白,经常在一些简单问题上出错,自己检查时还找不出来。看下面的代码:
if(Amount=123)
很多新人都理解为如果Amount等于123,就怎么样。其实这行代码的意思是先赋值Amount=123,然后判断这个表达式是不是真值,因为结果为123,是真值,那么就做后面的。如果想让当Amount等于123才运行时,应该if(Amount==123)
……
㈡ C语言中的赋值语句
变量
赋值号
表达式
例如:
int
i;
i=10;
完整代码:
#include
void
main(){
int
i;
i=10;
printf("i=%d",i);
}
在c语言中提供了10种复合的赋值运算符,他们是:+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=其中前五种是算术运算的,后五种是位运算的
例如:
#include
void
main(){
int
i;
i=10;
i+=5;
printf("i=%d",i);
}
㈢ C语言中赋值运算符&=的含义
a+=b 等同于 a = a+b
a-=b 等同于 a = a-b
a*=b 等同于 a = a*b
a/=b 等同于 a = a/b
a%=b 等同于 a = a%b
a&=b 等同于 a = a&b &表示按位与
a>>=b 等同于 a = a>>b >>表示右移
a<<=b 等同于 a = a<<b <<表示左移
a|=b 等同于 a = a|b |表示按位或
a^=b 等同于 a = a^b ^表示按位异或
基本的赋值运算符是“=”。他的优先级别低于其他的运算符,所以对该运算符往往最后读取。
一开始可能会以为它是“等于”,其实不是的。它的作用是将一个表达式的值赋给一个左值。一个表达式或者是一个左值,或者是一个右值。
所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。我们现在是用变量作左值,以后还可以看到,指针和引用也可以作左值。
复合的赋值运算符,又称为带有运算的赋值运算符,也叫赋值缩写。
例如:i=i+j;可表示为 i+=j;这里+=是复合赋值运算符。
同样的共有10种这样的运算符,它们是:
+= 加赋值;
-= 减赋值;
*= 乘赋值;
/= 除赋值;
%= 求余赋值;
&= 按位与赋值;
| = 按位或赋值;
^= 按位异或赋值;
<<= 左移位赋值;
>>= 右移位赋值。
㈣ C语言中的赋值语句
你都学傻了!!!!!
赋值就是赋值什么表示成功不成功啊;
你看看这个吧
c=(x=z);
c==(x=z);
第一个是赋值表达式,赋值表达式是不产生逻辑值的,也就是什么都没有
后一个才是关系表达式,是产生逻辑值的
自己想也得根据实际啊,要从实际出发,这是历史得教训
㈤ c语言赋值运算符
赋值号左侧必须是修个改的变量
7,a+2,'x'都是常量/常量表达式,不可被修改,不能作为赋值运算符的左操作数
㈥ c语言赋值运算符
c=(a-=a-5),(a=b,b+3);
是一个两部分的逗号表达式,第一部分中(a-=a-5)实际是a
=
a
-
(a
-
5);是a
=
0
-
(0
-
5)则a
=
5,第一部分变为c=(a=5),所以a和c都等于5,第二部分也是逗号表达式,a=b将b赋值给a,b是0.所以a也变为0,现在a和都为0,c为5,最后一个b+3没有作用。所以最后的值a、b、c分别是0、0、5
㈦ C语言中赋值语句的语法是怎样的
赋值的语法规则就是:
数据类型 变量名 = 表达式
表达式可以理解为一个值或一个计算公式就行,表达式加一个英文符号分号就是语句。
例如:
我们今天要用到的,我买了几斤苹果。
就可以这样写:
方式一:
Int apple_count = 0; //告诉计算机apple_count是用来存买苹果的斤数的,默认为0;
方式二:
Int apple_count; //告诉计算机apple_count是用来存买苹果的斤数的,以后再告诉计算机它等于多少,现在不知道;
(7)c语言的赋值运算符扩展阅读
1、C语言中,赋值运算的操作是有方向的,即将右侧表达式的值(也称为右值)赋值左侧的变量,只能是标识一个特定存储单元的变量名。
2、由于变量名只能出现在赋值运算符的左边,因此它也被称为左值;由于常量只能出现在赋值运算符的右边,因此它也被称为右值。左值可以用作右值,但右值不能用作左值。
㈧ 在C语言中11种赋值运算符的具体含义,用法
1.=
赋值运算符
变量=表达式
如:a=3;将a的值赋为3
2./=
除后赋值
变量/=表达式
如:a/=3;即a=a/3
3.*=
乘后赋值
变量*=表达式
如:a*=3;即a=a*3
4.%=
取模后赋值
变量%=表达式
如:a%=3;即a=a%3
5.+=
加后赋值
变量+=表达式
如:a+=3;即a=a+3
6.-=
减后赋值
变量-=表达式
如:a-=3;即a=a-3
7.<<=
左移后赋值
变量<<=表达式
左移就是将《左边的数的二进制各位全部左移若干位,《右边的数指定移动位数,高位丢弃,低位补0,
移几位就相当于乘以2的几次方
8.>>=
右移后赋值
变量>>=表达式
右移运算符是用来将一个数的各二进制位右移若干位,移动的位数由右操作数指定(右操作数必须是非负值),移到右端的低位被舍弃,对于无符号数,高位补0。对于有符号数,某些机器将对左边空出的部分用符号位填补(即“算术移位”),而另一些机器则对左边空出的部分用0填补(即“逻辑移位”)。注意:对无符号数,右移时左边高位移入0;对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0。如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的
系统移入1。移入0的称为“逻辑移位”,即简单移位;移入1的称为“算术移位”。
9.&=
按位与后赋值
变量&=表达式
按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若,A=true,B=true,则A∩B=true
10.
^=
按位异或后赋值
变量^=表达式
参与运算的两个量按照对应的位进行异或运算,且
0^0→0,
0^1→1,
1^0→1,
1^1→0
此外,一个数与0异或仍保持不变,即a^0=a
一个数与自己异或结果为0,即a^a=0
11.|=
按位或后赋值
变量|=表达式
参与运算的两个量按照对应位进行或运算,且
0|0→0,
0|1→1,
1|0→1,
1|1→1
这些位运算都是与二进制码有关的,所以多弄弄也就会了
㈨ C语言中赋值运算符的问题!
代表参与运算的元素的个数,如:+是二目运算符,因为参加+运算的必须为两个数,例如a+b
!是一目运算符,参与运算的为单个数,例如!a
㈩ C语言赋值运算符与赋值表达式
我们都知道基本的赋值运算符是"=",他的优先级别低于其他的运算符,所以对该运算符往往最后读取。下面和大家分享一下C语言赋值运算符与赋值表达式,一起来看看吧!
C语言赋值运算符与赋值表达式1
一、赋值运算符与赋值表达式
赋值符号“=“就是赋值运算符,作用是将一个数据赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。一般形式为:
变量名=表达式
在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。
例:a=12;此表达式读作“将10的值赋值给变量a”。
说明:
a、如果赋值号两边的运算对象类型不一致,系统会自动进行类型转换,转换的规则:将赋值号右边表达式的值的类型转换成赋值号左边变量的类型,
例:inty=3.5;在变量y中最终存储的是整数3。
b、可以将复制表达式的.值再赋值给变量,形成连续赋值。
例如:x=y=25是一个连续赋值表达式,x=y=25等价于x=(y=25),所以表达式x=y=25最终的值为25。
二、复合的赋值运算符
在赋值运算符之前加上其他运算符可以构成复合赋值运算符。其中与算术运算有关的复合运算符是:+=,—=,x=,/=,%=。
两个符号之间不可以有空格,复合赋值运算符的优先级与赋值运算符的相同。表达式n+=1等价于n=n+1,作用是取变量n中的值增1再赋给变量n,其他复合的赋值运算符的运算规则依次类推。
如求表达a+=a—=axa的值,其中a的初值为12。
步骤:
(1)先进行“a—=axa“运算,相当于a=a—axa=12—144=—132。
(2)再进行“a+=—132“运算,相当于a=a+(—132)=—132—132=—264。
C语言赋值运算符与赋值表达式2
其一般形式为:
变量=表达式
例如:
x=a+b
w=sin(a)+sin(b)
y=i+++--j
赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性,因此a=b=c=5可理解为a=(b=(c=5))。
在其它高级语言中,赋值构成了一个语句,称为赋值语句。 而在C中,把“=”定义为运算符,从而组成赋值表达式。 凡是表达式可以出现的地方均可出现赋值表达式。
例如:式子x=(a=5)+(b=8)是合法的。它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x,故x应等于13。
在C语言中也可以组成赋值语句,按照C语言规定,任何表达式在其未尾加上分号就构成为语句。因此如x=8;a=b=c=5;都是赋值语句,在前面各例中我们已大量使用过了。
类型转换
如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:
实型赋予整型,舍去小数部分。
整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。
字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。整型赋予字符型,只把低八位赋予字符量。
【例3-18】
#include
int main(void){
int a,b=322;
float x,y=8.88;
char c1=k,c2;
a=y;
x=b;
a=c1;
c2=b;
printf("%d,%f,%d,%c",a,x,a,c2);
return 0;
}
本例表明了上述赋值运算中类型转换的规则。a为整型,赋予实型量y值8.88后只取整数8。x为实型,赋予整型量b值322, 后增加了小数部分。字符型量c1赋予a变为整型,整型量b赋予c2 后取其低八位成为字符型(b的低八位为01000010,即十进制66,按ASCII码对应于字符B)。
注意:经大家反馈,笔者发现上面的例子容易造成误解,现已对代码进行更改,更改时间 2014-07-04 09:12:45,看评论的读者请注意评论时间,不要混淆。
更改后的代码如下:
#include
int main(void){
int a,c,b=322;
float x,y=8.88;
char c1=k,c2;
a=y;
x=b;
c=c1;
c2=b;
printf("a=%d, x=%f, c=%d, c2=%c ", a, x, c, c2);
return 0;
}
输出结果:
a=8, x=322.000000, c=107, c2=B
复合的赋值运算符
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。
构成复合赋值表达式的一般形式为:
变量 双目运算符=表达式
它等效于
变量=变量 运算符 表达式
例如:
a+=5 等价于 a=a+5
x*=y+7 等价于 x=x*(y+7)
r%=p 等价于 r=r%p