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