c语言 后面两个表达式求值及具体过程

int a=1,b=2,c=3,d=4; ++a*b-c--, a*b%c+1

第1个回答  2014-04-01
程序运行时 首先在内存(RAM)中为 各个变量申请内存 通过变量名 对变量进行查询 ;可以简单的理解为内存中 存在了 四个变量 a,b,c,d 并且进行了初始化工作(初始化:定义变量并且赋初值) 因为都是整形变量(int)所以每个变量都站两个字节 ,程序开始运行 ==》 ++a 表示 变量 a 首先进行自增运算(每次加1)然后在参加到其他运算中来 ,那么a-- 则表示 变量a首先进行运算然后在进行自减操作(每次减1) 这段程序运行后 a = 2 ;b=2;c=2;d=4. 结果为3 。 很久没用 VC或者TC了 建议自己编程运行下
第2个回答  2014-04-01
前者先算++a,得2,再*b,得4,再减去之前算的的c--(即3),得1

a*b得2,%c,得2,+1,得3
第3个回答  2014-04-01
++a*b-c--; //等价于:a=a+1;a*b-c;c--; 值为:1

a*b%c+1 //等价于:((a*b)%c)+1 =((2*2)% 2)+1=1

这里要考虑到优先级的问题和++a是先加,而c--是先算值后--
第4个回答  2014-04-01
++a*b-c-- : 2*2-3 = 1

++a 先进行自增运算 ++a =2
++a *b = 2*2 = 4
++a*b-c-- = 4-3 =1

该运算结束后 a =2 b =2 c =2

a*b%c+1 : 2*2%2 = 0 +1 = 1

a*b = 4
a*b%c = 4%2 = 0
a*b%c+1 = 0+1 =1追问

第二个表达式值,书上写的是3

追答

我这里理解的是先执行第一个表达式,再执行第二个表达式
如果答案是3,就是说两个表达式是没有关联的

本回答被提问者和网友采纳
相似回答