我期待着这里。但是它显示了g。为什么呢?
char *c="geek";
printf("%c",++*c);
答案 0 :(得分:9)
您正在尝试修改字符串文字,即undefined behaviour。这意味着关于你的程序将打印出来的内容,或者确实是否它将打印出任何东西都没有明确的说明。
尝试:
char c[]="geek";
printf("%c",++*c);
有关进一步的讨论,请参阅FAQ。
答案 1 :(得分:0)
这是undefined behaviour
,因为您尝试修改string literal
* c会给出字符'g'
但是当你应用这个++ * c意味着你正在尝试
*c=*c+1;
修改字符串及其未定义的语言标准
最好使用char
数组来解决这个问题,因为“string”文字存储在只读内存中并修改它会导致这种情况。
答案 2 :(得分:-1)
表达式将像这样评估(++(* c)),
首先评估内部* C,以便打印g。然后递增运算符将应用于指针变量C.在此print语句之后,指针c将指向下一个字符'e'。