Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么此函数会导致运行时错误 #包括 内部功能测试(无效){ 静态字符索引=50; 对于(;index_C_Runtime - Fatal编程技术网

C 为什么此函数会导致运行时错误 #包括 内部功能测试(无效){ 静态字符索引=50; 对于(;index

C 为什么此函数会导致运行时错误 #包括 内部功能测试(无效){ 静态字符索引=50; 对于(;index,c,runtime,C,Runtime,“index”是一个字符。根据C,字符可以是有符号的,也可以是无符号的。这是实现定义的。因此,对于不同的编译器/处理器,它会有所不同 char可以接受的最大值是255(0xFF)。当您添加1时,它将采用的值将取决于char在您的系统中是有符号的还是无符号的。如果没有符号,它将循环到0。如果有符号,它是未定义的,但大多数编译器仍将循环到-128。在这两种情况下,for循环条件永远不会为false 你有一个无限循环,这就是为什么它会分割故障 另外,您拥有的代码将不会编译,您需要修改行返回(int(i

“index”是一个
字符
。根据C,字符可以是有符号的,也可以是无符号的。这是实现定义的。因此,对于不同的编译器/处理器,它会有所不同

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

你有一个无限循环,这就是为什么它会分割故障


另外,您拥有的代码将不会编译,您需要修改行
返回(int(index));
返回((int)(index));
'index'是一个
char
。根据C,char可以是有符号的或无符号的。这是实现定义的。因此,对于不同的编译器/处理器,它会有所不同

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

你有一个无限循环,这就是为什么它会分割故障


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

1)这不是C。2)溢出发生在
char
中,无论它是
有符号的
还是
无符号的
。您认为
索引会变得比
0xff
大多少?此行:
for(;index此行的语法:
返回(int(index));
不正确,并导致编译器输出:“error:expected')‘index’之前的行应该是:
return(int)index;
为什么要麻烦使用
fonction()的返回类型
be
int
当调用方不使用返回值时。建议1)删除
return
语句2)使用签名:
void fonction\u test(void)
1)这不是C.2)溢出发生在
char
中,无论它是
有符号的
还是
无符号的
。您认为
index
会变得比
0xff
大多少?此行:
for(;index此行的语法:
返回(int(index));
不正确,并导致编译器输出:“error:expected')‘index’之前的行应该是:
return(int)index;
为什么要麻烦使用
fonction()的返回类型
be
int
当调用方不使用返回值时。建议1)删除
return
语句2)使用签名:
void fonction\u test(void)
#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;
}