有这样一个程序段
#include <iostream.h>void main()
{
  int i=0;  if (i=0)
    i++;
  else
    i--;
  cout<<i<<endl;}程序的运行结果是-1(没记错的话)。按常理分析,“正确”的显示应该是1。经过对i的值得替换,发现if和else后边的语句都被执行了,不解这是为什么。请各位不吝赐教。sign up

解决方案 »

  1.   

    i=0是一个表达式,表达式是有值的,也就是=号右边的值,其等于0,也就是false,所以执行i--
      

  2.   

    来晚了,if语句中的条件很容易写错的。所以为了避免写错,有人提出来这样的写法
    if (0==i) //这样就不会写错了,你总不能这样明显的错误 if(0=i)都看不见吧!
      

  3.   

    我也来晚了
    if(i=0)
    这好象不应该啊
    楼主你的c要重学
    拜我为师吧
      

  4.   

    i++从来没执行过。到是if中的产生副作用的赋值语句i = 0执行了。
      

  5.   

    我给你说吧!IF ...ELSE....都没有执行过。
    你也不应该范这样在的错吧!
    再说了:你用if(i=0)你的编译就没有发现有错?不会吧!
      

  6.   

    if(i=0)“i=0”是False当然不执行i++了,执行i--不就是-1:
      

  7.   

    很遗憾,来晚了。
    编译器认为:(i=0) == NULL == false;
    这是一般人刚开始都会犯的错误,以后不会就好。
      

  8.   

    if(0==i)
    {
     }
    .....
      

  9.   

    if(i=0)
    这里错了,幸亏我上PASCAL课的时候我从来不听,
    “=”是一个敷值的符号,“==”是一个比较的符号,而且两者的等级不一样,“=”的级别较高。
      

  10.   

    晕,中招了.....以前用vb的,c++初学......
      

  11.   

    if(0==i)
    {
     }
    来的太晚了,不过我想应该是楼主的笔误吧。呵呵