=号运算符,printf函数,进制输出的例题详解

xiaoxiao2021-02-28  131

char a='A'; int b=20; printf ("%d,%o",(a=a+1,a+b,b),a+'a'-'A',b)  首先,应该说明的是在不同的编译环境中结果是不一样的。 

在VC++6.0中的规则: printf函数的执行顺序是由右到左的

举个例子1: int a=65,b=20; printf("%d,%d\n",b=a+1,a=a+1); 输出结果是:67,66

而不是:66,66

例子2: int a=65,b=20; printf ("%d,%d",b=a+1,b+1,a=a+1); 输出结果是:67,21 第一个%d与b=a+1替换  第二个%d与剩下的替换  顺序右到左 先算a=a+1=66  替换 第二个 %d   再算b+1  =21  替换 第二个 %d

再算b=a+1=67  替换 第一个 %d

例子3: int a=65,b=20; printf ("%d,%d",(b=a+1,b+1),b-5,a=a+1); 输出结果是:67,61 第一个%d与 括号里的 替换,  第二个%d与剩下的替换 括号优先级最高,先算括号里的,括号里内容相当于逗号表达式,顺序从左到右。 余下的顺序从右到左 先算b=a+1=66 替换 第一个 %d 再算b+1  =67 替换 第一个 %d 再算a=a+1=66 替换 第二个 %d 再算b-5  =61 替换 第二个 %d 这题的答案是20,142  过程与 例子3 相似
转载请注明原文地址: https://www.6miu.com/read-21662.html

最新回复(0)