C语言的题目;那个i=13;printf(“%d%d”,i++,i)结果应该是什么?
答案:6 悬赏:0 手机版
解决时间 2021-03-10 23:43
- 提问者网友:蓝琪梦莎
- 2021-03-10 12:27
C语言的题目;那个i=13;printf(“%d%d”,i++,i)结果应该是什么?
最佳答案
- 五星知识达人网友:罪歌
- 2021-03-10 13:59
输出结果:13,13
问题 “可是从后往前运行不应该是1413么?”
1、i++ 含义:
先使用 i,然后 i 自增;即先输出 i,然后 i += 1;
2、想要输出14,13?
则需修改代码:
int i = 13;
printf("%d, %d", ++i, i);
问题 “可是从后往前运行不应该是1413么?”
1、i++ 含义:
先使用 i,然后 i 自增;即先输出 i,然后 i += 1;
2、想要输出14,13?
则需修改代码:
int i = 13;
printf("%d, %d", ++i, i);
全部回答
- 1楼网友:猎心人
- 2021-03-10 19:19
1314
第一个i为后置自加输出(运行到i++)后i自加1为14追问不对啊。。答案是1313追答从右到左吗?
第一个i为后置自加输出(运行到i++)后i自加1为14追问不对啊。。答案是1313追答从右到左吗?
- 2楼网友:有你哪都是故乡
- 2021-03-10 18:00
13 13
Printf语句是从右往左输出的
Printf语句是从右往左输出的
- 3楼网友:旧脸谱
- 2021-03-10 16:20
1314
printf 从后往前运行
int main(){
int i=13;
printf("%d %d",i++,i--);
}
这个是 12,13追问可是从后往前运行不应该是1413么?追答上面的题目答案:
运行平台不同,答案不同,
我的vs2010 答案是13,14
但是我知道vc 答案应该是13,13
所以我想我也说不清楚了。
我想在也搞不清楚了,但是printf确实是从后往前运行的,
比如
int main(){
int i=13;
printf("%d %d",i++,i--);
}
这个是 12,13
你给的例子是13 14 。。
这里有原因。。。
使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。请看下面两个例子:
例1
main(){
int i=8;
printf("%d %d %d %d %d %d ",++i,--i,i++,i--,-i++,-i--);
}
运行结果
8
7
7
8
-7
-8
例2
main(){
int i=8;
printf("%d ",++i);
printf("%d ",--i);
printf("%d ",i++);
printf("%d ",i--);
printf("%d ",-i++);
printf("%d ",-i--);
}
运行结果:
9
8
8
9
-8
-9
这两个程序的区别是用一个printf语句和多个printf 语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为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。
但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果是上述输出结果。
printf 从后往前运行
int main(){
int i=13;
printf("%d %d",i++,i--);
}
这个是 12,13追问可是从后往前运行不应该是1413么?追答上面的题目答案:
运行平台不同,答案不同,
我的vs2010 答案是13,14
但是我知道vc 答案应该是13,13
所以我想我也说不清楚了。
我想在也搞不清楚了,但是printf确实是从后往前运行的,
比如
int main(){
int i=13;
printf("%d %d",i++,i--);
}
这个是 12,13
你给的例子是13 14 。。
这里有原因。。。
使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。请看下面两个例子:
例1
main(){
int i=8;
printf("%d %d %d %d %d %d ",++i,--i,i++,i--,-i++,-i--);
}
运行结果
8
7
7
8
-7
-8
例2
main(){
int i=8;
printf("%d ",++i);
printf("%d ",--i);
printf("%d ",i++);
printf("%d ",i--);
printf("%d ",-i++);
printf("%d ",-i--);
}
运行结果:
9
8
8
9
-8
-9
这两个程序的区别是用一个printf语句和多个printf 语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为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。
但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果是上述输出结果。
- 4楼网友:拾荒鲤
- 2021-03-10 16:07
程序运行号显示:13 13
- 5楼网友:空山清雨
- 2021-03-10 14:41
13 13
printf的计算是从右到左
printf打印机制是先查找 打印参数%d %s 有几个,假如n个
再从printff 变量列表从右往左计算,最后取 前n个的值
如
i=1
printf("%d %d ",i++,i,i--);
结果是 0 0
printf的计算是从右到左
printf打印机制是先查找 打印参数%d %s 有几个,假如n个
再从printff 变量列表从右往左计算,最后取 前n个的值
如
i=1
printf("%d %d ",i++,i,i--);
结果是 0 0
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯