C语言运算的问题

执行语句x=(a=3,b=a--)后,x,a,b的值分别为多少?需要解释
2025-03-18 23:41:27
推荐回答(3个)
回答1:

b=a--,先将a的值赋给b,a再自减1

a=3,b=a=3,然后a自减1,a=2
x=(a=3,b=a--),右边为逗号运算符,从左至右执行各语句,并将最后一个语句的计算结果赋给x,对于本题,也就是将b的值赋给x。x=3
因此,执行语句x=(a=3,b=a--);后,x的值是3,a的值是2,b的值是3。

回答2:

// 先执行右边括号里面的 从左向右执行,
// 第一步 执行a = 3 ==》a = 3
// 第二步 执行 b = a-- 因为--在后,所以a先赋值给b 即b=3 a在--,即a = 2
// 第三步 x的值,在此执行过程中,x取括号里面最后一次执行的值,即取b的值
// 即a = 2,b = 3,x = 3
希望我的回答能对你有所帮助!

回答3:

0/3=0
0/1=0
对于除法运算符的运算属于算术运算的范畴.
进行算术运算的数据类型一般为:整型(int),长整型(long),短整型(short),字符型(char),实型<实型又分单精度实型(float)双精度实型(double)>
1.当运算双方是同类型的话,那么结果也是一样的类型,比如如果都为整型(int),那么结果也是整型
例:2/4=0;7/2=3;-5/3=-1
采取向0取整的原则。如果双方是float型,那么结果也是float型(小数部位是7个有效数字)
2.当运算双方不是同类型的话,那么机器就会自动地进行类型转换
double<---float
|
long
|
unsigned
|
int<---char,short
横向向左的箭头是必定转换的,如果数据类型是char的话必须先转换为int型,对于纵向的越往上级别越高,也就是两个数据间低等级的类型要先转化到那个高等级的数据类型,然后再进行计算,当然结果也就是那个高等级数据类型的形式.
3.还有种强制转化计算的方式,就是为了得到自己想要的数据类型,而将一个不符合标准的数据类型进行强制转换,比如float型的数据不能进行求余运算,所以必须要将他强制转化为int型方可运算,否则出错.例:float
a=4.3;(int)a%2=1;