我在SNS相册里看到这两个说法,标题是“我见过的最优雅的输出方式”什么的。

以下是两个声明:

printf("%d%c", a, " \n"[i==n]);
puts("YES\0No"+condition * 4);

我不知道他们在做什么以及他们如何工作。有人给我解释一下吗?谢谢你。

最佳答案

" \n"[i==n] 采用表达式 i==n ,其计算结果为 0 或 1,并将其用作数组 " \n" 的索引,获得 ' ''\n'
"YES\0N0"+condition * 4 采用数组 "YES\0N0" ,当在大多数表达式(包括这个表达式)中使用时,该数组“衰减”指向指向其第一个元素的指针,并将 condition * 4 添加到该指针。如果 condition 为 1,则生成一个指向 'N' 开头的 "N0" 的指针。

关于c - 奇怪的 printf 和 puts 语句解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21718848/

10-12 15:59