c - 奇怪的 printf 和 puts 语句解释

标签 c printf puts

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

相关文章:

c++ - 使用一维数组打印二维数组

c - 为什么puts()最后会打印一个额外的字符?

c - 函数内的字符串偏移量

ruby-on-rails - 如何在 ruby​​ 中打印数组内的对象元素

循环链表

c - 保留函数体中分配的内存

c - 从文件中的特定点读取一行

c++ - 写入文件时,fprintf 与 printf 不同吗?

检查C中的整个字符数组是否只是数字,如果是则返回true?

c - 为什么我的 printf 输出是歪的?