战龙哥斯拉资料:求printf("%d,%d,%d",i,++i,++i)的顺序C高手进######!!!!
来源:百度文库 编辑:神马品牌网 时间:2024/10/06 09:42:18
main()
{int i=3; printf("%d,%d,%d",i,++i,++i);}
稍不注意就是3,4,5
错了,正确答案是5,5,4 从右往左,
一般是从左往右的,为什么这个就不一样了呢?
54zero这位大哥说的不对哦
跟编译器有关是对的!!!
以下顺序全是自右向左,没有那个区别(用的同一个编译器)
main()
{int i=3;printf("%d,%d",i++,++i);}4,4/*后i自增为4,前i仍为4*/
main()
{int i=3;printf("%d,%d",++i,i++);}5,3/*后i仍为3,前i(4+1)为5*/
main()
{int i=3;printf("%d,%d",++i,i);}4,3
main()
{int i=3;printf("%d,%d",i,++i);}4,4
main()
{int i=3;printf("%d,%d,%d",++i,i,++i);}5,4,4
欢迎在来讨论这个问题!!!谢谢
{int i=3; printf("%d,%d,%d",i,++i,++i);}
稍不注意就是3,4,5
错了,正确答案是5,5,4 从右往左,
一般是从左往右的,为什么这个就不一样了呢?
54zero这位大哥说的不对哦
跟编译器有关是对的!!!
以下顺序全是自右向左,没有那个区别(用的同一个编译器)
main()
{int i=3;printf("%d,%d",i++,++i);}4,4/*后i自增为4,前i仍为4*/
main()
{int i=3;printf("%d,%d",++i,i++);}5,3/*后i仍为3,前i(4+1)为5*/
main()
{int i=3;printf("%d,%d",++i,i);}4,3
main()
{int i=3;printf("%d,%d",i,++i);}4,4
main()
{int i=3;printf("%d,%d,%d",++i,i,++i);}5,4,4
欢迎在来讨论这个问题!!!谢谢
5,5,4 的情况是从右向左的顺序。
不同编译器的顺序会有不同。
写程序不要用这种既不易读、又容易出错的语句。
养成一种良好的编程习惯很重要。
祝你成功!
哈哈~ 是这样不同编译器的顺序会有不同TC2.0-TC++3.0应该是这结果
C 里有个说头 就是(优先 级别)
前自增(++i)地优先级别高于 后自增i++。
而就这题printf 里是 先判断 先自增且为从右到左 。
也就是说 : printf 里 地优先次序是
有自增>无 自增 (且执行次序为由右到左)
好了朋友 您该明白了吧 ~ (^_^)
回答者:54zero - 试用期 一级 4-17 21:19
我认可这个大哥说的!!
应该上编辑器问题吧
同意54zero的
main()
{int i=3;printf("%d,%d",++i,i);}4,3
答案是4,4;不是楼主说的:4,3
参数用从右到左进栈运算!i++先用i再++
求printf("%d,%d,%d",i,++i,++i)的顺序C高手进######!!!!
printf("%d \n",12 &012)
printf("a=%d,b=%d",a,b)与printf("a=%d,b=%d\n",a,b)有区别吗?
c语言试题 执行语句printf("2:%d,",printf("1:%d,",scanf("%d",&x)));以后的输出结果是____。
一维数组a[i],可以直接“printf("%d",a[i]);”吗?
一维数组a[i],可以直接“printf("%d",a{i]);”输出吗?
printf("%0*d\n",4);的结果我们如何理解?
语句:printf("%d",(a=3)&&(b=-3));输出结果是什么?为什么?
printf("%d",(a=2)&&(b=- 2));输出结果是什么?为什么?
为什么printf("%d",1.5/1.5);的结果是0