我在一个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,则生成指向 “N0”
开头的 'N'
的指针。
关于c - 奇怪的 printf 和 puts 语句解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21718848/