gpt4 book ai didi

仅在 1 台机器上出现 C++ 警告 : format '%d' expects argument of type 'int'

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:07 26 4
gpt4 key购买 nike

我得到了

g++ -O3 cache-l1-line.cpp -o cache-l1-line -lrt
cache-l1-line.cpp: In function 'int main()':
cache-l1-line.cpp:33:58: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat]

在我学校的 sunfire 服务器上……但不是我的机器 (Arch Linux)。为什么会这样。有问题的行似乎是

printf("%d, %1.2f \n", i * sizeof(int), totalTime/TIMES);

定义 i 的地方:

for (int i = 4; i <= MAX_STRIDE/sizeof(int); i*=2)  {

有什么问题: full source on GitHub (指向修订版的链接)

最佳答案

sizeof() 返回一个 size_t,而不是一个 int。您应该始终将此类“特殊”类型转换为您的 printf 格式所期望的类型:

printf("%d, %1.2f \n", (int)(i * sizeof(int)), totalTime/TIMES);

注意:有些人喜欢深入研究他们的库以查看类型定义的类型,并在格式字符串中使用适当的类型。但是,这有两个问题:首先,它在另一个编译器上可能不同。其次,size_t 不是long,而是size_t。因此,从更正式的角度来看,您总是会遇到类型不匹配的情况,因为没有采用 size_t 的格式参数。

关于仅在 1 台机器上出现 C++ 警告 : format '%d' expects argument of type 'int' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com