首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这么比较也可以吗

2013-12-06 
这样比较也可以吗?#include iostreamusing namespace stdint main(){int a1double b1.0if(ab)cou

这样比较也可以吗?

#include <iostream>
using namespace std;
int main()
{
int a=1;
double b=1.0;
if(a==b)
cout<<"LSB1"<<endl;
else 
cout<<"LSB2"<<endl;
return 0;


不同类型也可以比较吗?
[解决办法]
编译器会往大的类型转换,可以比较
[解决办法]
算术类型在表达式中都是可以相互转换的
比如在表达式 a == b 中,为了避免丢失精度,会把a转换为double型,然后再比较
但是算术类型和非算术类型就不能转换了,比如把你的代码改成:

2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main()
{
    int a=1;
    double *b=1.0;
    if(a==b)
        cout<<"LSB1"<<endl;
    else 
        cout<<"LSB2"<<endl;
    return 0;

就会报错了
[解决办法]
不同数值类型进行运算会自动进行类型提升
不过这段代码有问题,用double和int比较,往往不会得到期望的结果。
[解决办法]
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

[解决办法]
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

不要写连自己也预测不了结果的代码!

热点排行