=号运算符,printf函数,进制输出的例题详解
来源:互联网 发布:java 线程池 等待队列 编辑:程序博客网 时间:2024/06/05 17:38
char a='A'; int b=20;
printf ("%d,%o",(a=a+1,a+b,b),a+'a'-'A',b)
首先,应该说明的是在不同的编译环境中结果是不一样的。
int a=65,b=20;
printf("%d,%d\n",b=a+1,a=a+1);
输出结果是:67,66
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
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 相似
printf ("%d,%o",(a=a+1,a+b,b),a+'a'-'A',b)
首先,应该说明的是在不同的编译环境中结果是不一样的。
在VC++6.0中的规则: printf函数的执行顺序是由右到左的
int a=65,b=20;
printf("%d,%d\n",b=a+1,a=a+1);
输出结果是:67,66
而不是:66,66
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
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 相似
阅读全文
0 0
- =号运算符,printf函数,进制输出的例题详解
- printf 函数的运算顺序
- 函数printf的运算顺序
- printf 函数的输出条件
- NYoj 244 16进制的简单运算&&printf输出八进制十六进制
- C语言格式输出函数printf()详解
- C语言格式输出函数printf()详解
- C语言格式输出函数printf()详解
- C语言格式输出函数printf()详解
- C语言格式输出函数printf()详解
- printf函数中使用输出控制符的原因
- C基础printf、scanf函数、,号运算符
- 格式化输出的函数printf()用法
- C语言的格式化输出函数printf
- linux下printf()函数输出的条件
- printf函数使用—针对不同数据类型的输出结果详解
- printf()格式化输出详解
- printf()格式化输出详解
- seafile 迁移手册
- Struts2项目实战 微云盘(一):项目分析
- Java 注解1
- java图片处理以及pdf转图片
- macdown安装
- =号运算符,printf函数,进制输出的例题详解
- 8.5早做题感悟
- conan-transit服上的库列表
- window2008下基于阿里云免费HTTPS证书+apache2.4.27的HTTPS配置方法
- grep&sed&awk简单说明
- 11个强大的Visual Studio调试小技巧
- oracle中的数据类型char
- Android BroadcastReceiver注册方式比较
- xxx is not in the sudoers file.This incident will be reported.的解决方法