以下代码按照我的预期编译并运行。
#include <stdio.h>
int main(void) {
const char C1 = '1';
char const C2 = '3';
printf("%c %c", C1, C2);
char *pC1 = &C1; *pC1 = 'H';
char *pC2 = &C2; *pC2 = 'o';
printf("%c %c", C1, C2);
return 0;
}
此代码调用未定义的行为?
答案 0 :(得分:5)
是的,此代码调用未定义的行为。根据C标准,
如果尝试通过使用具有非const限定类型的左值来修改使用const限定类型定义的对象,则行为未定义。