c语言若有定义char s1[]="abc";char s2[4]="abc";则if(s1==s2) printf("yes");else printf("no");执行的结果是 ( )。 A yes B no C 编译错误 D 以上答案都不对
时间: 2024-04-28 21:23:26 浏览: 14
答案是 B,输出 "no"。
因为`s1`是一个字符数组,它在栈内分配了一段空间,用于存储字符串"abc"(包括字符串结尾的'\0'字符),而`s2`是一个字符数组,它在栈内分配了一段空间,用于存储字符串"abc"(不包括字符串结尾的'\0'字符)。因此,`s1`和`s2`的地址不同,它们指向不同的内存空间,所以`s1==s2`的比较结果为假,输出"no"。
相关问题
C语言中,为什么s1=s2=s3=s4=0错误
在C语言中,赋值运算符是右结合的,这意味着在进行多个赋值的时候,从右往左依次进行赋值。因此,s1=s2=s3=s4=0这个表达式会先将0赋值给s4,然后将s4的值赋给s3,以此类推,最后将s1的值赋为0。但是,这样的赋值方式并不是我们想要的,因为s1、s2、s3、s4都应该被赋值为0。正确的写法应该是将每个变量分别赋值为0,例如:s1=0; s2=0; s3=0; s4=0;。
c语言中if(strcmp(s1,s2)!=0)是什么意思
在C语言中,strcmp函数用于比较两个字符串的大小关系,如果两个字符串相等,则返回值为0;如果第一个字符串小于第二个字符串,则返回值小于0;如果第一个字符串大于第二个字符串,则返回值大于0。因此,if(strcmp(s1,s2)!=0)表示如果字符串s1和字符串s2不相等,则执行if语句后面的代码块。其中"!="表示不等于的意思,"strcmp(s1,s2)"表示比较字符串s1和s2的大小关系,"!=0"表示不等于0的意思,即表示字符串s1和s2不相等的条件。