C语言中类型.运算符.表达式

时间:2021-01-15 01:44:32

类型.运算符.表达式

变量名

1.      名字是由字母和数字组成,第一个字符必须是字母,下划线”_”被认为是字母

2.      大小写字母有区别,变量名用小写,符合常量全部使用大写字母

3.      变量名不要以”_”开头,为了提高可读性,以“字母_字母”为好

数据类型和长度

1.      Char字符型:占用一个字节

2.      Int整型:反映机器中整数类型的自然长度

3.      Float类型:单精度浮点类型

4.      Double类型:双精度浮点类型

5.      Short  int si;

6.      Long  int li;

Short类型通常是16位,long类型通常是32位,int类型可以是16位或者32

在位数上:Short<int<long

Signedunsigned,限定任何整型和char类型,unsigned类型的数总是正的或者0

Long  double类型表示高精度浮点数

常量

1.      int类型常量:3344

2.      long类型常量:9876654321L

3.      无符号常量以字母u或者U结尾

4.      浮点数常量:89.89


进制问题

整数类型表示:35--10进制(35),8进制(035),16进制(0x1f),


字符常量

1.      一个字符常量就是一个整数

2.      字符常量也叫字符串字面值,也就是字符序列,”hello”, ””等等;‘x’这是整数,”x”字符

声明变量

所有变量必须先声明后使用,声明变量会规定变量的类型,

Int lw1,lw2,lw3;  <====>int  lw1; int lw2;  int  lw3;

声明变量初始化

int i = 22;

char c=’h’;

如果不是自动变量,则变量只能初始化一次,也可以使用const修饰,表示该变量不可以被修改,const修饰的数组元素也都不可以被修改:

const int  i=33;

const double  d=3.14;

const char  msg[]=’hello’;

运算符

算术运算符

+

-

*

/

%

++

--

整数相除,不能整除会对小数部分进行截取

#include <stdio.h>

int main()

{

   /* 除号运算 */

   int i=10,j=3;

   int res=i/j;

   int res2=i%j;

   printf("%d,----,%d",res,res2);

   return 0;

}

 

关系运算符

==

!=

<=

>=

关系运算符的优先级低于算术运算符

#include <stdio.h>

main()

{

   int a = 20;

   int b = 10;

   int c ;

   if( a == b )

   {

      printf("Line 1 : a 等于 b\n" );

   }

   else

   {

      printf("Line 1 : a 不等于 b\n" );

   }

   if ( a < b )

   {

      printf("Line 2 : a 小于 b\n" );

   }

   else

   {

      printf("Line 2 : a 不小于 b\n" );

   }

   if ( a > b )

   {

      printf("Line 3 : a 大于 b\n" );

   }

   else

   {

      printf("Line 3 : a 不大于 b\n" );

   }

   /* 改变 a 和 b 的值 */

   a = 10;

   b = 20;

   if ( a <= b )

   {

      printf("Line 4 : a 小于或等于 b\n" );

   }

   if ( b >= a )

   {

      printf("Line 5 : b 大于或等于 b\n" );

   }

}

Line 1 : a 不等于 b

Line 2 : a 不小于 b

Line 3 : a 大于 b

Line 4 : a 小于或等于 b

Line 5 : b 大于或等于 b

逻辑运算符

假设A为真,B为假

 

&&

称为逻辑与运算符。如果两个操作数都为真,则条件为真。

(A && B) 为假。

||

称为逻辑或运算符。如果两个操作数中有任意一个非假,则条件为真。

(A || B) 为真。

!

称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。

!(A && B) 为真。


#include <stdio.h>

main()

{

   int a = 5;

   int b = 20;

   int c ;

   if ( a && b )

   {

      printf("Line 1 - 条件为真\n" );

   }

   if ( a || b )

   {

      printf("Line 2 - 条件为真\n" );

   }

   /* 改变 a 和 b 的值 */

   a = 0;

   b = 10;

   if ( a && b )

   {

      printf("Line 3 - 条件为真\n" );

   }

   else

   {

      printf("Line 3 - 条件不为真\n" );

   }

   if ( !(a && b) )

   {

      printf("Line 4 - 条件为真\n" );

   }

}

赋值运算符

=

简单的赋值运算符,把右边操作数的值赋给左边操作数

C = A + B将把 A + B 的值赋给 C

+=

加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数

C += A 相当于 C = C + A

-=

减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数

C -= A 相当于 C = C - A

*=

乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数

C *= A 相当于 C = C * A

/=

除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数

C /= A 相当于 C = C / A

%=

求模且赋值运算符,求两个操作数的模赋值给左边操作数

C %= A 相当于 C = C % A

<<=

左移且赋值运算符

C <<= 2 等同于 C = C << 2

>>=

右移且赋值运算符

C >>= 2 等同于 C = C >> 2

&=

按位与且赋值运算符

C &= 2 等同于 C = C & 2

^=

按位异或且赋值运算符

C ^= 2 等同于 C = C ^ 2

|=

按位或且赋值运算符

C |= 2 等同于 C = C | 2

杂项运算符

sizeof()

返回变量的大小。

sizeof(a)将返回 4,其中 a是整数。

&

返回变量的地址。

&a; 将给出变量的实际地址。

*

指向一个变量。

*a; 将指向一个变量。

? :

条件表达式

如果条件为真 ?则值为 X : 否则值为 Y

表达式

赋值表达式

a = a+2;  <==>  a+=2;

x* = y+2; <==>  x = x*(y+2);

 

条件表达式

if(a>b);

         c=a;

else

         c=b;

这里<==>  c = (a>b)?a:b;

#include <stdio.h>

int max(int a,int b);

int main()

{

   int a=1,b=2,c;

   c=max(a,b);

   printf("%d",c);

  

   return 0;

}

int max(int a,int b){

         if(a>b)

                   return a;

         else

                   return b;

}

优先级问题

后缀 

() [] -> . ++ - -  

从左到右 

一元 

+ - ! ~ ++ - - (type)* & sizeof 

从右到左 

乘除 

* / % 

从左到右 

加减 

+ - 

从左到右 

移位 

<< >> 

从左到右 

关系 

< <= > >= 

从左到右 

相等 

== != 

从左到右 

位与 AND 

从左到右 

位异或 XOR 

从左到右 

位或 OR 

从左到右 

逻辑与 AND 

&& 

从左到右 

逻辑或 OR 

|| 

从左到右 

条件 

?: 

从右到左 

赋值 

= += -= *= /= %=>>= <<= &= ^= |= 

从右到左 

逗号 

从左到右