C++ 积累

来源:互联网 发布:什么网络电视机顶盒好 编辑:程序博客网 时间:2024/06/02 06:56

一、while(scanf("%d",&n),n)   是什么意思?

while(scanf("%d",&n),n)  中的scanf("%d",&n)是输入一个n值,后的,n是一个,号表达式,结果是最后一个逗号的值,while( 表达式)表达式为非0是就看成是真值。
while(scanf("%d",&n)==1)在成功读入1个数据时执行循环体。
功能一样,为0结束。
二、(a & 1)?(b=9):(b=3)
a&1  二进制中,a的二进制表示法末尾为1,(a&1) 就为真,即得到结论a为奇数。双目运算符,?前为条件,条件为真则第二个括号运算,若假,第三个括号运算。


三、  define lev(n) (n%4==0&&(n%100 !=0 || n%400 == 0) )

      宏,判断是否为闰年

关于宏:

    简单的宏                                                     

#define N 2+2                                              

void main()                                                      

int  a=N*N;  

printf("%d",a);

}

a的结果为 2+2*2+2=8      

      

     带参数的宏

 #difine  area(x)  x*x   

  void main(){

int   y=area(2+2);

 printf ( "%d",y);      

 printf("%d", area(2+2) / area(2+2) );

}

 y的结果为2+2*2+2=8            

 得到结果为2+2*2+2 /  2+2*2+2 = 2+4+1+4+2=13


#define dprint(expr)  printf(#expr "=%\n" , expr)

宏,按原样替换!!!!




四、 <math.h>   fabs(r)  得到r的绝对值    sqrt(e) 得到e的开方数

<math.h>跟<cmath>,前者是兼容C风格的库文件,后者是标准c++库文件 <stdio.h> , <stdio>类似