为什么此函数导致运行时错误

时间:2017-03-20 03:36:17

标签: c runtime

#include <stdio.h>


int fonction_test(void){
    static char index = 50;
    for(; index<=0xff;index++){
        printf("Valeur: %02x\r\n", index);
    }
    return (int(index));
}

int main(){
    // your code goes here
    fonction_test();
    return 0;
}

说实话,我并不熟悉C,但我想理解为什么这次迭代只有155次。

1 个答案:

答案 0 :(得分:2)

'index'是char。根据C字符,可以签名或不签名。这是实现定义。所以不同的编译器/处理器会有所不同。

它可以采用char的最大值是255(0xFF)。当您添加1时,它将取决于您的系统中char是已签名还是未签名。如果是无符号的,它将循环到0。如果已签名,则未定义,但大多数编译器仍会回绕到-128。在任何一种情况下,for循环条件永远不会为false。

你有一个无限循环。这就是为什么它会出错。

此外,您拥有的代码无法编译,您需要将行return (int(index));修改为return ((int)(index));