输入一个8位二进制数,将其转换为十进制数输出。
在程序中如果cin输入的是01101001,那么ch=01101001,为什么if (ch == ‘1’) 怎么会执行,ch == ‘1’?
程序是:#include <iostream>
using namespace std;
double power (double x, int n);
int main()
{
int  i;
int  value = 0;
char ch;
cout << "Enter an 8 bit binary number  ";
for (i = 7; i >= 0; i--)
{
cin >> ch;
if (ch == ‘1’)   
value += int(power(2,i));
}
cout <<"Decimal value is  "<<value<<endl;
}
double power (double x, int n)
{
double val = 1.0;
while (n--)  val *= x;
return(val);
}

解决方案 »

  1.   

    ch=01101001已经超出了char的表示范围了,是个无效值
      

  2.   

    cin输入01101001后,那ch等于多少?
      

  3.   


    OS在把字符串01101001赋给ch时,取的是第一个字符就是0
      

  4.   


    在你没重载cin的>>的操作符时,VC是不会把你的输入当做二进制的
      

  5.   


    在你没重载cin的>>的操作符时,VC是不会把你的输入当做二进制的
    额 是我错啦
      

  6.   

    OS在把字符串01101001赋给ch时,取的是第一个字符就是0
    那系统在什么时候将1字符赋给ch,if语句怎么能执行。
      

  7.   

    for (i = 7; i >= 0; i--)
     {
        cin >> ch;
        if (ch == ‘1’)   
          value += int(power(2,i));
     }
    这是个循环,需要把字符串01101001分成八次输入,每次输入一个字符,当你输入的字符是1的时候,就会执行了
      

  8.   

    我在运行时没有分8次输入的,一次输入01101001,可以转换,所以就不明白循环语句是怎么执行的

    OS将你一次输入的字符串放在cin的缓冲区,然后循环八次赋值给ch的
      

  9.   

    你的ch是一个char型变量,怎么能够存储01101001这么多呢?ch只能存储一个字符,你的ch == ‘1’,根本就不能比较,你要用一数组指针来移动,这样就行了!
      

  10.   

    一次输入01101001,系统会把整行放入系统的缓冲区,cin会先从缓冲区读.读完了才会继续从控制台接收新的输入.