数组与dIfferent类型的变量的相等性

问题描述 投票:0回答:3
#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类型,计算如何工作?

c arrays recursion
3个回答
1
投票

int可以存储char可以存储的所有可能值,以及更多。

因此,将char值分配给int会保留该值,并且分配回char也会保留该值,因为该值来自char


1
投票

在这种情况下你很好,因为任何char实例都保证适合int

(请注意,像C中的'j'这样的文字是int类型,保证它可以适合char)。


0
投票

将有截断,您将收到编译器的警告。

由于字符也是小整数,因此在概念上分配到/从不同大小的整数来说并不那么复杂,但实际上,由于精度的差异,您可以丢弃位。

当然temp是一个整数是没有意义的,我会选择const char

© www.soinside.com 2019 - 2024. All rights reserved.