voidUniverse 2016-04-06 14:49 采纳率: 66.7%
浏览 2843
已采纳

C,int64_t超出范围?

#include <stdio.h>  
#include <inttypes.h>

int main(void)
{
    //int64_t a=-(9223372036854775807)-1;    //-(2^63-1)-1,这么赋值不报警
    int64_t a=-9223372036854775808;            //-2^63,这样就报警
    printf("%zu\n", sizeof(int64_t));
    printf("%016lx\n", a);
}

运行结果如下:
图片说明
都能输出正确结果,但是第二种赋值会警告,编译器是不是只认识第一种写法?
规定了这么写?感觉真的怪,哈哈......

  • 写回答

1条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记