为什么printf("%d","ad"-"bc"); 输出-3?

图片说明

ad 和 bc 是两个零时字符数组,且相连的,这种结果的不定性因素很大。

a d 0 b c 0

你可以这样理解。

“ad” -“bc” 计算的是两个字符串指针之间的减法,因为两个字符串在内存中是相邻存储的,指针差值为3个char长,且ad在低地址,所以结果为-3。
理论上,这个结果只会是-3,因为ad和bc 为printf函数里的两个临时变量,应依次压进内存的stack中,位置肯定是相连的。