带sizeof的简单printf根本不起作用

时间:2010-09-22 05:13:13

标签: c sizeof

我得到了最简单的代码来显示数据类型的sizeof(),比如说int。

#include <stdio.h>
int main() { 
  printf('%i', sizeof(int));
}

无论我做什么,例如将sizeof(int)放入一个整数,或使用'zu'而不是'i',它就把这个错误交给我了:

error: invalid conversion from ‘int’ to ‘const char*’

我的编译器有问题吗?我不明白为什么我不能打印这么简单的sizeof ..

编辑:似乎printf('%s', 'foo');仍然告诉我我正在将int转换为const char*,究竟是怎样的?

4 个答案:

答案 0 :(得分:9)

printf("%zu", sizeof(int))
  • printf,not print
  • %zu,而不是%i(这是无符号值,不是整数)
  • 双引号,不是单引号

答案 1 :(得分:8)

单引号'用于分隔字符文字(在C中键入int),而双引号"用于分隔字符串文字(键入“char数组“在C中。”

printf声明如下:

int printf (const char * format, ...)

因此,您尝试传递函数需要int的{​​{1}}或可以转换为const char *的内容。

注意:在C ++中,字符文字的类型为const char *,字符串文字是“char数组”。

答案 2 :(得分:5)

尝试print("%i", sizeof(int));

缺少双引号

如果您使用的是C ++,还可以探索是否可以使用cstdio而不是stdio.h。

答案 3 :(得分:1)

应该是:

printf("%i\n", sizeof(int));

应该是双引号。