c6328 :大小不匹配 :已将unsigned_64作为__Param_(2)传递,但需要使用int来调用printf

155 阅读1分钟

报错代码:

int main() {
	printf("%d\n", sizeof(char));  
	return 0;
}

报错原因:
 占位符 %d 在格式化输入输出中代表int(4bytes),%ld代表long int(>=4bytes), %lld代表long long int (8bytes);
 sizeof,它返回的是一个64位 (8bytes)的无符号整型,所以占位符应该是%lld
解决办法:

  1. 在代码顶部加入: #define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
  1. 使用%lld 代替 %d,不建议,除了VS编译器以外其他的编辑器可能无法识别,缺少跨平台性和可移植性。
int main() {
	printf("%lld\n", sizeof(char));  
	return 0;
}