以下代码使用gcc输出14.为什么?
printf("%d", (int*)2+3); // This code is meant to be obfuscated!
Run Code Online (Sandbox Code Playgroud)
hac*_*cks 11
int *演员2作为地址.添加3将添加3*sizeof(int)到它.在你的系统上它似乎sizeof(int)是等于4,这就是它给予的原因2 + 12 = 14.
但是,您应该注意到给定的代码调用未定义的行为有两个原因:
对不指向数组元素的指针执行算术会导致未定义的行为.
如果转换规范无效,则行为未定义.282)如果任何参数不是相应转换规范的正确类型,则行为未定义.