在C和C++中,为什么这个带有递增整数的`main`函数永远不会溢出?

问题描述 投票:0回答:2

在C和C++中,嵌入的最基本的

main
函数是:

int main(void) {
    int i = 0;

    while(1) {
        i++;
    }
}

但是,由于

i
是一个整数,它不会在某个时候溢出吗?

此外,在等待特定中断时使用相同的策略(使用

while(1) i++
)循环是否安全?

c++ c embedded stm32 microcontroller
2个回答
0
投票

确实溢出了具体的实现方式。

将有符号整数类型定义为的实现 取模不需要检测整数溢出

所有现代计算机都将有符号整数定义为模。


0
投票

我会采取这种方法:

#include <stdio.h>
#include <stdint.h>

int main()
{
    uint16_t i = 1;

    while(i>0)
    {
        i++;
    }
    printf("i overflowed at: %u  sizeof(i): %u\n", i-1, sizeof(i));
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.