我得到了最简单的代码来显示数据类型的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*
,究竟是怎样的?
答案 0 :(得分:9)
printf("%zu", sizeof(int))
%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));
应该是双引号。