【发布时间】:2013-07-22 01:24:46
【问题描述】:
就编译器类型检查和自动转换而言,printf 的转换说明符是否等同于函数声明?
我正在尝试了解 C 基本数据类型的自动类型转换、促销等,我想知道是否可以使用 printf 而不是虚拟函数来检查发生了什么。
举个例子让我的问题更清楚,
void f1 (int a){}
int main() { f1('c'); return 0; }
帮助我理解如果我声明一个带有 int 参数的函数但在调用中传递 char 类型会发生什么。
我想知道我是否可以打电话
printf("%i", 'c');
出于上述目的。
另外,如果有人能指出一些关于 C 中类型表示/转换/推广的权威资源(在网络或书籍上),我将不胜感激。
【问题讨论】:
-
您的示例没有多大帮助,因为在 C 中所谓的“整数字符常量”,例如
'c'已经属于int类型。所以我们将这样一个常量传递给一个需要int的函数,你永远不会看到警告,因为一切都很好。 -
@JensGustedt 这就是我实验的首要目的——理解你提到的那些点。当需要一种类型而传递另一种类型时,它是如何工作的——char、int、long。浮点数、字符串、指针等。这里给出的是最基本的。
标签: c function printf type-conversion