下面给出的代码是我的老师问的。 只是测试谁可以在不运行代码的情况下弄清楚输出。 用于编译Turbo C ++。
在下面的代码中,我无法理解函数调用中增量和减量是如何发生的,天气值是从左向右或从右向左传递的。
#include<stdio.h>
#include<conio.h>
int main(){
char c[]="hello";
char *p;
clrscr();
p=&c[0];
printf("%c %c %c ",++*p,*++p,*p++);
puts(c);
getchar();
return 0;
}
根据我的输出是: 伊尔 艾姆洛
但是当它编译并运行时我得到了: 升 hem 为什么会发生这种情况,即值是从右向左传递还是其他?
谢谢。
答案 0 :(得分:0)
运行OP发布的代码会导致:
m l h hemlo
但是,编译器输出为:
gcc -ggdb -Wall -o "untitled" "untitled.c" -lncurses -lrt -lpthread -lm -lgmp
untitled.c: In function ‘main’:
untitled.c:11:32: warning: operation on ‘p’ may be undefined [-Wsequence-point]
printf("%c %c %c ",++*p,*++p,*p++);
~^~
untitled.c:11:32: warning: operation on ‘p’ may be undefined [-Wsequence-point]
Compilation finished successfully.
由于未定义的问题,实际输出可能是任何东西