作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些输出 bcdefg
的代码,但我不明白为什么。
我用谷歌搜索,但找不到任何东西。
const char a[]="Abcdefg";
printf("%s",&(sizeof 2[a])[a]);
为什么输出是 bcdefg
,而不是 Abcdefg
?
最佳答案
这段代码的目的是让你感到困惑,而不是做任何有用的事情。不要写这样的代码。以下是编译器如何解释它:
2[a]
与 a[2]
相同,都是 char
类型的值(该值完全不没关系;编译器甚至不会尝试评估它)sizeof 2[a]
与 sizeof(char)
相同,等于 1&(sizeof 2[a])[a]
是指向字符串 Abcdef
中的字符 b
的指针 - 该字符索引为 1printf("%s",&(sizeof 2[a])[a])
从该指针开始打印字符串关于无法理解 &(sizeof 2[a])[a],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56350998/
我是一名优秀的程序员,十分优秀!