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

原因解决方案

2012-03-15 
原因#include stdio.hvoidmain(){intnscanf( %d ,&n)if(n 10)printf( %d\n ,n++)elseprintf( %

原因
#include <stdio.h>
void   main()
{   int   n;
  scanf( "%d ",&n);
  if(n <10)
  printf( "%d\n ",n++);
  else
  printf( "%d\n ",n--);


}
输出是9,     是不是因为     n++   是先执行再加1对吗?

[解决办法]

[解决办法]
不知道如果换一个编译器的话会不会有不同的结果.
[解决办法]
你那个。。。
比如先输入个9
那么输出个9输出完之后,N才变10

#include <stdio.h>
void main()
{ int n;
scanf( "%d ",&n);
if(n <10)
{printf( "%d\n ",n++);
printf( "%d\n ",n); //这里可以看出来N加之后变什么了
}
else
printf( "%d\n ",n--);


}

比如你输入一个大于10的数。。。
比如输入10 他执行 printf( "%d\n ",n--);
那先输出10。。再减


再比如
[解决办法]
输出是9, 是不是因为 n++ 是先执行再加1对吗?
你输入的如果是9,当然输出是9了
如果你是在VC6下
如果你输入的是数字
而且不超出范围
那么你输入什么就输出什么
因为是后加加和后减减
[解决办法]
n++==>
return n;
n=n+1
[解决办法]
n++先用后加,这个定义不管在哪种编译器中都是一样的,
不一样的情况可以会出现在:
printf( "%d %d ", n++, n); // n = 9
这时是输出9 10呢还是10 9,这就不一定,这个才与编译器有关.但这个与n++没关系,而是输出函数printf的参数的优先级问题,先左后右还是先右后左.
[解决办法]
if else 是一条你语句 你这个是两条语句了 后面那个顺序执行
[解决办法]
注意
如: A=N++ 是先执行A=N,再是++;而 A= ++N则是先执行++后再执行A=N;两者的效果是不同的

热点排行