C语言switch又报错了?

今日讲解的是一个C语言学习中很容易混淆的一个点,就是switch需要的是一个整型表达式。
1、C语言程序练习题说明
来看看这段C语言程序:

图片

#include <stdio.h>
int main() {    char a[10] = {''};    scanf("%s", a);    switch(a)    {        case "1":         printf("1n");        break;    }
    return 0;}

这段C语言程序很简单,定义了一个字符数组,然后输入一个字符串,在switch中判断输入的字符串,如果输入的是字符串”1″,那么C语言程序就输出这个字符串,否则啥也不干,超级简单对不对?

来编译运行一把,如下:

图片

呵呵,这都能报错?这又是个啥意思?
先别往下看,自己先开动脑筋,想想问题出在哪里?
2、C语言程序讲解

C语言中,switch后面要接一个整数类型的表达式,这段C语言程序中接的是个数组名,也就是接的是一个地址,这怎么行。

同理,case后面也不能是个字符串啊,看着是”1″,其实也是字符串”1″的地址,这也不行。

那么要怎么改呢?继续往下看。

3、C语言程序修改

知道原因,就好改了。

这段C语言程序不用字符数组,就用一个普通的整型变量不就行了。改写的C语言程序如下:

#include <stdio.h>
int main() {    int a;    scanf("%d", &a);    switch(a)    {        case 1:         printf("1n");        break;    }
    return 0;}
现在你再运行下这个C语言程序,还有问题吗?

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/82086.html

(0)
guozi's avatarguozi
上一篇 2024年5月31日 下午2:47
下一篇 2024年5月31日 下午2:48

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注