需要解释C输出吗

需要解释C输出吗,c,pointers,C,Pointers,可能重复: 其输出为a。看到了,但我觉得输出应该是b,因为c=+*p。 任何人都可以解释输出的原因吗?当然,这是未定义的行为。任何事情都有可能发生 您试图修改字符串文字,这是非法的 例如,如果你这样做了 char c = *p; ++c; 您将看到正确的输出 p的实际类型应该是const char*,在这种情况下,您会得到一个编译器错误。当然,这是未定义的行为。任何事情都有可能发生 您试图修改字符串文字,这是非法的 例如,如果你这样做了 char c = *p; ++c; 您将看到正确的输

可能重复:

其输出为
a
。看到了,但我觉得输出应该是
b
,因为
c=+*p

任何人都可以解释输出的原因吗?

当然,这是未定义的行为。任何事情都有可能发生

您试图修改字符串文字,这是非法的

例如,如果你这样做了

char c = *p;
++c;
您将看到正确的输出


p
的实际类型应该是
const char*
,在这种情况下,您会得到一个编译器错误。

当然,这是未定义的行为。任何事情都有可能发生

您试图修改字符串文字,这是非法的

例如,如果你这样做了

char c = *p;
++c;
您将看到正确的输出


p
的实际类型应该是
const char*
,在这种情况下,您会得到一个编译器错误。

Augh!比我快一秒钟:)@Habeeberwad你可以这么看,是的。但是
++'a'
也是非法的。啊!比我快一秒钟:)@Habeeberwad你可以这么看,是的。但是
++'a'
也是非法的。