#include<stdio.h>
#include<string.h>
int reverse(char v[],int i,int j){
char temp;//what happens if a define temp as an integer
if(j==1)
return 1;
temp=v[i];//computations
v[i]=v[j];//computations
v[j]=temp;//computations
reverse(v,++i,--j);
}
int main(void){
char test[]="jimmakos";
reverse(test,0,strlen(test)-1);
printf("%s",test);
return 0;
}
这是一个反转字符串的程序。如果我在函数temp
中将int
定义为char
而不是reverse()
,我不明白为什么该程序仍然有效。由于数组v[]
的元素是char
,因此类型计算如何工作?
答案 0 :(得分:1)
int
可以存储char
可以存储的所有可能值,以及更多值。
因此,为char
分配int
值会保留该值,并且分配回char
也会保留该值,因为该值来自char
。< / p>
答案 1 :(得分:1)
在这种情况下你很好,因为任何char
实例保证都适合int
。
(请注意,C中的{em>文字类似'j'
是int
类型,可以保证它可以放入char
)。
答案 2 :(得分:0)
将会发生截断,您将收到编译器的警告。
由于字符也是小整数,因此从概念上来说,从不同大小的整数赋值往往不是那么复杂,但实际上由于精度的不同,你可以删除位。
当temp
为整数时,指向当然没有点,而是转而使用const char
。