是printf("%d",*(++(*a))); 未定义

Day*_*rai -3 c

printf("%d",*(++(*a)));未定义?这a是指向整数的指针.

我没有除此之外的任何代码.这个问题的扩展,引起了很多困惑.只想知道这个print中发生了什么.它依赖于Architechture(32 Vs 64)或编译器版本.

希望答案具有描述性和清晰性.

Bar*_*chs 12

如果你将其分解,它会这样做:

  1. 什么a是在指向:*a
  2. 增加一个 ++(*a)
  3. 取消引用 *(++(*a))

因此,如果 存储的值+ 1a是有效指针,则这将起作用.否则,结果未定义,很可能导致运行时错误.

  • 表达式定义明确.它是否会导致运行时故障是无关紧要的. (2认同)