一道C语言的题,

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:48:57
#include "stdio.h"
main()
{
int x=20,y=++x;
printf("%d,%d",(x++,y),y++);
}

输出为什么是22,21??
我怎么想都是21,21
谢谢啦

这种题太傻了,没必要把心思用在这,就算你这样写了,比如printf("%d,%d",(x++,y),y++);别人也很难看懂,这大大降低程序的可读性。最好分开输出,好吗?

我怎么觉得是,21.22啊

(x++,y) ?可已这样写的吗
括号里 x=21 y=++x y=22

编译的输出结果是21,21啊。你在重新编译一下!

这个是看编译器,你用的编译器是从右开始执行的,先执行y++,在执行(x++,y),所以结果就是22,21

printf("%d,%d",(x++,y),y++);
相当于printf("%d,%d",y,y++);我编译的结果是21,21