【例4-5】在一个()里输出
- #include
- int main(void){
- int i=8;
- printf("The raw value: i=%d\n", i);
- printf("++i=%d \n++i=%d \n--i=%d \n--i=%d\n",++i,++i,--i,--i);
- return 0;
- }
运行结果:
The raw value: i=8
++i=8
文章插图
++i=7
--i=6
--i=7
【例4-6】在多个()里输出
- #include
- int main(void){
- int i=8;
- printf("The raw value: i=%d\n", i);
- printf("++i=%d\n", ++i);
- printf("++i=%d\n", ++i);
- printf("--i=%d\n", --i);
- printf("--i=%d\n", --i);
- return 0;
- }
运行结果:
The raw value: i=8
++i=9
++i=10
--i=9
--i=8
这两个程序的区别是用一个语句和多个 语句输出 。但从结果可以看出是不同的 。为什么结果会不同呢?就是因为函数对输出表中各量求值的顺序是自右至左进行的 。
但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果是上述输出结果 。
注意:经读者 @龍騰浩少 反馈,我们发现原来的例子在VC6.0下计算过程比较复杂,不能直观的说明自右向左的求值顺序 。上面的代码是修改后的,修改日期为 2014-07-05 。
下面是老代码及分析:
【例4-5】
main(){
int i=8;
("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
}
【例4-6】
main(){
int i=8;
("%d\n",++i);
("%d\n",--i);
("%d\n",i++);
("%d\n",i--);
("%d\n",-i++);
("%d\n",-i--);
}
【C语言格式输出函数printf详解】这两个程序的区别是用一个语句和多个 语句输出 。但从结果可以看出是不同的 。为什么结果会不同呢?就是因为函数对输出表中各量求值的顺序是自右至左进行的 。在第一例中,先对最后一项“-i--”求值,结果为-8,然后i自减1后为7 。再对“-i++”项求值得-7,然后i自增1后为8 。再对“i--”项求值得8,然后i再自减1后为7 。再求“i++”项得7,然后i再自增1后为8 。再求“--i”项,i先自减1后输出,输出值为7 。最后才求输出表列中的第一项“++i”,此时i自增1后输出8 。
- Go语言教程第十集 如何玩转Restful和RPC网络编程
- gotour 在线 Go 语言教程 —— Go 语言之旅
- 各朝各代的母语:历史上各朝的官方语言是什么?
- 1 基于J-Link的调试信息输出
- 让小孩学Python语言编程有意义吗?
- 点亮LED STC15W1048脚单片机,开漏和推挽输出比较
- 集体改图片格式和排序命名
- PACS/RIS影像管理系统源码,采用VC++编程语言,提供三维图像后处理和算法
- 如何安装配置VS Code|配置C语言编译环境|彻底卸载VS Code
- 乾隆皇帝精通哪几门语言?乾隆皇帝有哪些天赋