gpt4 book ai didi

c - unsigned long long int 奇怪的行为

转载 作者:太空狗 更新时间:2023-10-29 15:20:35 24 4
gpt4 key购买 nike

这个C代码

unsigned long int a, b, x;
float c, d, y;

a = 6;
b = 2;
x = a/b;

c = 6.0;
d = 2.0;
y = c/d;

printf("\n x: %d \n y: %f \n",x,y);

正常工作并打印出来

x: 3 
y: 3.000000

但是,当我把第一行改成这个的时候

unsigned long long int a, b, x;

我得到这个输出:

x: 3 
y: 0.000000

这真的让我感到困惑...我没有对 c、d 和 y 进行任何更改 - 为什么我会得到这个?我在 Linux 上使用 gcc

最佳答案

对于后一种用途:

printf("\n x: %llu \n y: %f \n",x,y);

对无符号积分使用u(你的输出是正确的,因为你使用了小值)。对 long long 使用 ll 修饰符,否则 printf 将使用错误的大小来解码 printf 的第二个参数 (x),因此它使用错误的地址来获取 y。

关于c - unsigned long long int 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676909/

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