鱼C论坛

 找回密码
 立即注册
查看: 1303|回复: 5

[已解决]C语言S1E12

[复制链接]
发表于 2020-5-26 10:04:44 | 显示全部楼层 |阅读模式
3鱼币
我没写bool类型也能运行  那bool有什么用?

小甲鱼的
#include <stdio.h>
#include <stdbool.h>

int main()
{
        float op1, op2;
        char ch;
        float result;
        bool invalid = false;

        printf("请输入式子:");
        scanf("%f %c %f", &op1, &ch, &op2);

        switch (ch)
        {
                case '-': op2 = -op2; // no break
                case '+': result = op1 + op2; break;
                case '*': result = op1 * op2; break;
                case '/':
                        if (op2 != 0)
                        {
                                result = op1 / op2;
                                break;
                        }
                        else
                        {
                                invalid = true;
                                break;
                        }
        }

        if (invalid)
        {
                printf("除数不能为零!\n");
        }
        else
        {
                printf("结果是:%.2f\n", result);
        }

        return 0;
}
#include<stdio.h>
int main()
{
        char ch;
        float b,q,z;
        
        printf("请输入式子:");
        scanf("%f %c %f",&b,&ch,&q);
        
        switch(ch)
        {
                case '+':z=b+q;break;
                case '-':z=b-q;break;
                case '*':z=b*q;break;
                case '/':if(q==0)
                {
                        printf("余数不能为零。"); 
                }
                else
                {
                        z=b/q;
                }
                
                }
                printf("结果是:%.2f",z);
                return 0;
                }


我的
最佳答案
2020-5-26 10:04:45
bool就是一个记录除数是否为零的标志,你的第二种方法也可以

最佳答案

查看完整内容

bool就是一个记录除数是否为零的标志,你的第二种方法也可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-26 10:04:45 | 显示全部楼层    本楼为最佳答案   
bool就是一个记录除数是否为零的标志,你的第二种方法也可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-27 08:36:34 | 显示全部楼层
都可以

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
维德 + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-27 09:00:13 | 显示全部楼层
第2种肯定是不行的,除数为0会打印未初始化内存的 z。如果想这么写的话,得多加一行 return 0;
代码见下:
#include<stdio.h>


int main() {
    char ch;
    float b, q, z;

    printf("请输入式子:");
    scanf("%f %c %f", &b, &ch, &q);

    switch (ch) {
        case '+':
            z = b + q;
            break;

        case '-':
            z = b - q;
            break;

        case '*':
            z = b * q;
            break;

        case '/':
            if (q == 0) {
                printf("余数不能为零。");
                return 0;
            }
            else {
                z = b / q;
            }

    }
    printf("结果是:%.2f", z);
    return 0;
}

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
维德 + 5 + 5 + 3 谢谢受教了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-27 15:58:53 | 显示全部楼层
bool本质上还是用于增强代码可读性的,就像true/false 肯定比1和0让人更好懂(比如while(true){...} );
如果进行反汇编,会发现高级语言的流程控制也是基于bool值进行的(先比较再进行jnz之类的跳转),
如果要增强代码可读性建议用bool值或者自己做相关宏定义;
简而言之,这是可选项,并非必选。
====================================================
还有建议楼主声明变量的时候进行相关初始化,野指针、野变量危害很大!!!

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
维德 + 5 + 5 + 3 谢谢 受教了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-27 20:14:07 | 显示全部楼层
KevinHu 发表于 2020-5-26 10:04
bool就是一个记录除数是否为零的标志,你的第二种方法也可以

谢了 man
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 17:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表