指针相关的常见未定义行为有如下内容:
其他常见未定义行为如下:
更完整的未定义行为列表可以在这里找到。
int i=0;i=(i++);不知道编译器会怎么选择自增和赋值的顺序,所以这是由编译器决定的,属于未定义行为。 char *p=”hello”;p[1]=’E’“hello”这个字符串属于一个字符串常量了。指针p指向了这个字符串常量,通过这个指针来直接修改常量第二个字符,这也属于未定义行为。 char *p=”hello”;char ch=*p++ 只是通过指针找到第二个字符并将它赋值给一个字符变量,并没有改变这个字符串常量,所以不属于未定义行为。