回 帖 发 新 帖 刷新版面

主题:有关几个VC++最最基本的问题(谢谢各位高手们了!)

我刚刚接触VC++,在自己看书做题的过程中出现了几个问题,自己想了好久也没考虑出来,希望各位高手们帮我解答一下,谢谢大家了~~
     一:在经典的C++基本数据类型中,实型包括单精度,双精度实型,但我始终分不清两者有什么区别,哪些数是单精度实型,哪些数是双精度实型。
书中提到的是单精度的范围是3.4e-38~3.4e+38,且表示数字的精度为7位有效数字;双精度的范围是1.7e-308~1.7e+308,且数字精度为15位有效数字。
         那为什么1.6就为双精度实型,而不是单精度实型?

     二:在C++算术运算符号中,“/”表示整除,那普通的除法用什么符号表示呢?

     三:在switch语句中,有这样的描述:“如果不写break,程序会继续执行下一条语句,直到遇到break或者switch结构结束。”
      那请看下面一道题:
       int a=10;
       switch (b)
       {
        case 1:
        a+=10;
        break;
        case 2:
        a*=10;
        break;
        case 3:
        a/=10;
        case 4:
        a=100;
        break;
        default:
        a=0;
       }

    题目问当b=3,a为多少?
    那答案是不是a=100?即使b=3,但case3后没有break,继续执行case4,即使b不等于4,那最后a的值也为100。我这样分析对么?


这些问题虽然很简单,但我是经过自己思考后实在想不出来了,才拿出来问大家的,希望各位高手能够耐心解答,不要见笑,谢谢大家了!!!

回复列表 (共4个回复)

沙发

int a=10;
       switch (b)
       {
        case 1:  a+=10; break;
        case 2:  a*=10;break;
        case 3:  a/=10;
        case 4:  a=100;break;
        default: a=0;
       }

板凳

关于楼主的第三个问题,请看这里……
[url]http://bbs.pfan.cn/post-283076.html[/url]

3 楼


问题二:
可以通过类型转换来解决这个问题

4 楼


我也是个初学者,对于单精度还是双精度的问题,实际应该是看你如何去定义的,1.6确切的说应该就是实型.
一般的除法,就用类型转换或则就是定义成实型.如 int a,b;float c;a=10;b=4;c=(float)a/b; 或则 开始定义时,float a,b,c;c=a/b;都可以实现一般的除法.
问题3,我的分析也是100,就是因为break的关系,b=3时,执行完case3后,继续执行case4然后才break跳出.

我来回复

您尚未登录,请登录后再回复。点此登录或注册