五、语句(例1---输入输出)

#include <stdio.h>

int main()
{
   int n;
   printf("请输入一个整数:");
   int iRet=scanf("%d",&n);//如果用户一直输入回车,scanf在这种调用格式下不会返回
   printf("您输入的值是:%d   接收到的有效参数个数:%d\n",n,iRet);
   while(getchar()!='\n');//如果没有这一句,程序可能会卡死。缓冲区出错,导致后面的标准IO拒绝工作

   n=0; printf("测试:请输入一个整数:");
   scanf("%d",&n);//用户可能输入0,也可能输入错误,如果没有对SCANF返回值的判断,会导致程序运行的结果不一定是用户想要的
   printf("您输入的值是:%d\n",n);
   while(getchar()!='\n');

   char c; 
   while(1)
   {
	   printf("测试2:请输入一个字符:");
	   scanf("%c",&c);//如果参数输错,错误的数据并不会自动在缓冲区中被清除,如果没有人为处理,这里会出现死循环
		                      //如果输入的是多个回车,这种格式下会返回
	    	                  //即使参数正确,回车符也不会被自动清除
	   while(getchar()!='\n');
	   printf("您输入的字符:%c INT值:%d \n",c,c);
	   if(c>0)break;//人为的逻辑要求
   }
}
 
 
#include <stdio.h>


int main()
{
   //标准输出格式排版
   int a=138;float f=199.32; 
   int n;
   for(n=0;n<20;n++){
   printf("\r%-5d-%8.3f-%1d",a,f,n);//注意%1d的特殊情况,值比它大时的显示方式
   fflush(stdout);//强迫输出缓冲区马上输出,而无需再缓冲
   //缓冲区碰到回车或缓冲区满了会自动输出
   //注意:fflush(stdin); 清除的是输入的缓冲区,它是无条件的清理缓冲区,注意与while(getchar()!='\n');异同
   usleep(1000*1000);
   }
   printf("\n");   
}
 
 
#include <stdio.h>


int main()
{
   int a=3,b=5,c=0,d=1;
   printf("%d,%d,%d\n",a<=b,c=1+a&&b,d+=b<<=2);
   a=-3;
   printf("%d,%d\n",a>=0&&a<=100,0<=a<=100);
   //注意这样的0<=a<=100要跟数学同样的式子相区隔
   //上式在C里更应该写成:a>=0&&a<=100
   //      0  1    ,RST0 L0 R?  ,RST1 <=L0 R1     
   a=0;b=1;
   a=(b,printf("%d ",b),++b,printf("%d ",b),++b);
   //           1       b2 ,        2      ,b3  
   printf("%d \n",a);
   //       3
   a=0;b=1;
   a=(b,printf("%d ",b),printf("%d ",b++),printf("%d ",b),b++);
   //           1               1                 2
   printf("%d %d\n",a,b);
   //      2  3
   a=0;b=1;
   printf("%d %d %d\n",b,++b,b++);
   //       3  3  1   b3,b3 ,b1
   b=1;
   printf("%d,%d,%d,%d,%d,%d,%d\n",b,++b,b++,++b,b++,++b,++b);
   //       7  7  5  5  3  3  2  b7 ,b7 ,b5  ,b5 ,b3 ,b3,b2        <-这一个输出是错的
   //       7  7  5  7  3  7  7  b7, b7,!b5  ,b7,!b3,b7,b7
   //推论1:++b的运算对B的影响:本位参数的输出暂时保留,但计算会有效,
   //b++编译器是直接输出结果  <-理解成固化的默认的规律
   a=0;b=1;a=b++;
   printf("%d %d %d %d\n",++a,b=1+a++ +(a++ +2),b,a);
  //          4  5  5  1     a4,b1+1+(3)      ,b2, a1
  //推论2!!:一个变量如果从事的运算只是与自身有关的,那它遵守推论1,否则按原有规则做事
  //++i先自增再使用,显示输出的使用级别最低,其次到赋值(显示级别仅次于++i)
  //在+++或---:这种情况看++优先还是+优先,原则是优先的先处理
   printf("%d %d\n",a,b++);//a=3,b=5


}


你可能感兴趣的:(c,工作,测试,include,float,编译器)