代碼:的printf redifines UINT32_MAX
#include <stdio.h>
#include <stdint.h>
int main(int argc, char *argv[]) {
printf("%lu\n%lu\n%lu\n%lu\n%lu\n%lu\n%lu\n",
UINT32_MAX,
UINT32_MAX,
UINT32_MAX,
UINT32_MAX,
UINT32_MAX,
UINT32_MAX,
UINT32_MAX);
return 0;
}
輸出:
4294967295
4294967295
4294967295
4294967295
4294967295
18446744073709551615
18446744073709551615
錯誤或故意的嗎?爲什麼? 我認爲它自己說話,但接口需要我添加更多的行之前,我可以發佈它(以大量代碼爲少文本lol)
你'printf'格式不匹配你的價值觀通過。你的編譯器應該已經警告過這個。因爲你傳遞了意外的參數類型,所以它們被'printf'錯誤地解壓縮。 –
如果您使用的是GCC或Clang,在編譯'-Wall -Wextra'時添加這些標記是一種很好的做法。讓這成爲一種習慣。 – jweyrich