当前位置: 首页 > 知识库问答 >
问题:

故意指定大于INT_MAX[duplicate]的'i'值时的奇怪行为

冯嘉珍
2023-03-14

当我在这段代码中分配i大于INT_MAX的值时-

#include <stdio.h>
#include <limits.h>

int main()
{

   int i;
   i=INT_MAX+3;

   printf("%d \n",INT_MAX);  //INT_MAX = 2147483647

   if(i>INT_MAX) 
     {     
         printf("OVERFLOW");
     }
  else 
    {
         printf("%d",i);    
    }   
     return 0;
}

所以在这里,作为i=INT_MAX 3则条件为真,应该打印溢出,但它会打印一些负值。这是未定义的行为吗?

共有1个答案

韩彬
2023-03-14

>

  • 是的,有符号整数溢出在C中有未定义的行为。

    i

  •  类似资料:
    • 我正在使用Mapstruct映射将一个POJO转换为另一个POJO模型 以下是mapstruct自动生成的方法 该方法基本上获取源POJO的映射,并将其转换为目标模型的映射。生成正在通过。 当我运行代码时,我在这个方法中得到了ClassCast异常:HeaderAttributeGenericDataTypeMaptoStringEnergiectAttributeDataMap 堆栈跟踪: 我还

    • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方

    • 问题内容: 嗨,这对我来说是个棘手的问题。我有三张桌子。 一个包含手机号码和唯一的ID(tbldealermobiles) 其中一个包含购买日期,唯一的ID和其他详细信息(历史记录) 其中一个包含客户类型,唯一ID和其他详细信息。(tblAllDealers) 当我想显示购买了超过30天(如果是“ Outbound”)和购买超过60天(如果是虚拟)的客户时,就会出现问题。 我只想返回Jon和Jac

    • 我有以下代码: 假设我现在将电脑的时区设置为太平洋时间(PDT为UTC-7),则打印 2012年6月29日星期五08:15:00太平洋标准时间 PDT不是比IST(印度标准时间)晚12.5小时吗?这个问题在任何其他时区都不会发生-我尝试了UTC、PKT、MMT等,而不是日期字符串中的IST。Java中有两个IST吗? 注意:实际代码中的日期字符串来自外部源,因此我不能使用GMT偏移量或任何其他时区

    • 我有一个简单的类来测试竞争条件。我尝试了两次: 当我使用在第二个线程中注释,输出为: 第二个线程永远活着。因为第二个线程永远看不到主线程设置为true的标志的变化。 当我取消注释< code>System.out.println(count)时;输出是: 程序在1秒后停止。 如何使第二个线程看到所做的更改?

    • 问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么