我正在学习C,由于涉足IOS开发,我对Objective-C略知一二,然而,在Objective-C中,我使用NSLog(@"%i", x);将变量x打印到控制台,但我一直在阅读一些C教程,他们说使用%d而不是%i.

printf("%d", x);个 和printf("%i", x);都正确地将x打印到控制台.

这两个似乎都把我带到了同一个地方,所以我在问有经验的开发人员哪一个是首选的?语义上再正确一次还是right次?

推荐答案

printf()一起使用时,它们完全等效.就我个人而言,我更喜欢%d,因为它使用得更频繁(我应该说"它是int的惯用转换说明符吗?").

(%i%d之间的一个不同之处在于,当与scanf()一起使用时,则%d总是期望十进制整数,而%i00x前缀识别为八进制和十六进制,但是任何理智的程序员都不会使用scanf(),因此这不应该是一个问题.)

C++相关问答推荐

在链表中动态存储数据的问题

如何检测非 IEEE-754 浮点数,以及如何使用它们?

您可以使用 C 内联汇编来对齐指令吗? (没有编译器优化)

在数组中查找与数组均值相同的对

可能的堆栈粉碎?

新手:定义的字符串是否设置为所有 NULL?

在格式控制字符串中使用消息

打印素数的程序

union无法解码字节数组

如果平台上“long”和“int”的大小相同 - “long”和“int”有什么不同吗?

为什么 C++ 中的字符串文字 (char*) 必须是常量?

(x | y) - y 为什么不能简单地是 x 甚至 `x | 0`

如何制作一个不会被优化的无限空循环?

如果缺少 const char* 数组初始化逗号,则生成编译器警告

为什么我应该总是启用编译器警告?

即使我将输出重定向到 /dev/null,printf 仍然会产生成本吗?

编译 HTK 时出现“致命错误:bits/libc-header-start.h:没有这样的文件或目录”

为什么为位字段分配值不返回相同的值?

为什么 (A+B) 的 FFT 与 FFT(A) + FFT(B) 不同?

使用指向过去的 malloc 的指针是否定义明确?