我在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/