1、c语言-数据类型与运算符(含答案)

1、c语言-数据类型与运算符(含答案)
1、c语言-数据类型与运算符(含答案)

一、选择题

1. 可用作C语言用户标识符的一组标识符是( B )。

A. void define +WORD

B. a3_b3 _123 YN

C. for -abc Case

D. 2a DO sizeof

2. 存储以下数据,占用存储字节最多的是(D )。

A. 0

B. …0?

C. “0”

D. 0.0

3. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。

A. 空格或逗号

B. 逗号或回车

C. 逗号或分号

D. 空格或回车

4. 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( C )。

A. 12

B. 144

C. 156

D. 288

5. 假设在程序中a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数

式1/abc的表达式是( A)。

A. 1.0/a*b*c

B. 1/(a*b*c)

C. 1/a/b/(float)c

D. 1.0/a/b/c

6. 设”int a=15,b=26;”,则”printf(“%d,%d”,a,b);”的输出结果是(C )。

A. 15

B. 26,15

C. 15,26

D. 26

7. 设x是一个int型的,y的值为10,则表达式x && y的值为(C )。

A. 1

B. 0

C. 与x值相同

D. 与x值相反

8. x>0 && x<=10的相反表达式为( A )。

A. x<=0 || x>10

B. x<=0 && x>10

C. x<=0 || x<=10

D. x>0 && x>10

9. x>0 || y==5的相反表达式为( B )。

A. x<=0 || y!=5

B. x<=0 && y!=5

C. x>0 || y!=5

D. x>0 && y==5

10. 下面的哪个保留字不能作为函数的返回类型?( C ) 。

A. void

B. int

C. new

D. long

11. 假定a为一个整型数组名,则元素a[4]的字节地址为(B) 。

A. a+4

B. a+8

C. a+16

D. a+32

12. 字符串”a+b=12\n”的长度为(B )。

A. 6

B. 7

C. 8

D. 9

13. 假定下列x和y均为int型变量,则不正确的赋值为( B )。

A. x+=y++

B. x++=y++

C. x=++y

D. ++x=++y

14. 设有以下定义

int a=0;

double b=1.25;

char c=’A’;

#define d 2

则下面语句中错误的是( D )

A.a++;

B. b++

C. c++;

D.d++;

15. 设x和y均为bool量,则x&&y为真的条件是( A) 。

A. 它们均为真

B. 其中一个为真

C. 它们均为假

D. 其中一个

16.以下叙述中正确的是(A)

A. C程序中注释部分可以出现在程序中任意合适的地方

B.花括号"{"和"}"只能作为函数体的定界符

C.构成C程序的基本单位是函数,所有函数名都可以由用户命名

D.分号是C语句之间的分隔符,不是语句的一部分

17.以下不能定义为用户标识符的是(D)

A scanf

B V oid

C _3com_

D int

18. 若有定义:int

*p[3];,则以下叙述中正确的是(B)

A.定义了一个基类型为int的指针变量p,该变量具有三个指针

B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针

C.定义了一个名为*p的整型数组,该数组含有三个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

19.已定义c为字符型变量,则下列语句中正确的是(C)

A. c='97';

B. c="97";

C. c=97;

D. c="a";

20.以下选项中非法的表达式是( D )

A .0<=x<100

B .i=j==0

C. (char)(65+3) D x+1=x+1

21. 如有int a=11;则表达式(a/1)的值是(D)

A.0

B.3

C.4 D11

22. 以下叙述中正确的是( B )

A.C语言的源程序不必通过编译就可以直接运行

B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C.C源程序经编译形成的二进制代码可以直接运行

D. C语言中的函数不可以单独进行编译

23. 若以下选项中的变量已正确定义,则正确的赋值语句是( C )

A. x1=26.8%3

B. 1+2=x2

C.x3=0x12

D.x4=1+2=3;

24. 在int a=3,int *p=&a;中,*p的值是( D)

A.变量a的地址值

B.无意义

C.变量p的地址值

D.3

25. 合法的常量是——(A)

A.‘program’ B. –e8 C.03x D.0xfl

26. C语言中的变量只能由字母。数字和下划线组成,且第一个字符---(C)

A.必须是字母 B.必须是下划线

C.必须是下划线和字母 D.可以是字母.数字或下划线中任一一种

27.已知A=10,B=20,下类表达式正确的是(C)

A.C=(A++)*(——B)=200

B. A—=30

C.C=(A++)+(B——)=30

D.C=(++A)*(——B)=210

28.要求当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,以下不满足要求的表达式是(D)

A.A%2==1 B。!(A%2==0)

C. A%2

D.!(A%2)

29. 下面不正确的字符赋值或赋初值的方式为——(C)

A.char s[10]=”hello!”

B.char s[10]={…h?, …e?, …l?, …l?, …o?, …!?}

C.char s[10];s=”hello”

D.char[ ]=”hello!”

30. 字符组a[20]和b[20],下面正确的输出语句是——(D)

A.put(a,b)

B.prinf(“%s,%s,a[ ],b[ ]

C.putchar(a,b)

D.puts(a); puts(b)

31. C语言中,要求参加运算的数必须是整数的运算符是(C)

A./

B.!

C.%

D.==

32. 以下符号中不能作为标识符的是:(D)

A_256 Bvoid C.vanf D4Struct

33. 按照标识符的要求,(D)符号不能组成标识符。

A.连接符

B.下划线

C.大小写字母

D.数字字符

34. C语言中的基本数据类型所占存储空间长度的顺序是( A )

A . char<=int<=float<=double<=long

B . int<=char<=float<=long<=double

C . int<=long<=float<=double<=char

D. char<=int<=float<=long<=double

35. 若x,i,j和k都是int型变量,则执行下面表达式后x的值为( C )

x=(i=4,j=16,k=32)

A.4

B.16

C.32

D.52

36. 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( B ):

A.7

B.8

C.6

D.2

37. 已知各变量的类型说明如下:

int k,a,b;

unsigned long w= 5;

double x=1.42;

则以下不符合C语言语法的表达式是( A ):

A. x%(一3)

B. w+=-2

C.k=(a=2,b=3,a十b)

D.a十= a一=(b=4)*(a=3)

38. 已知各变量的类型说明如下:

int i=8,k,a,b;

unsigned long w=5;

double x=1.42,y=5.2;

则以下符合C语言语法的表达式是( A )

A. a十=a一=(b= 4)*(a=3)

B.a=a*3=2

C .x%(一3) D.y=f1oat(i)

39. 以下不正确的叙述是( D )

A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。

D.当从键盘输入数据时,对整型变量只能输入整型数值,对实型变量只能输入实型数值。

40. 以下正确的叙述是:( D )

A.在C程序中,每行中只能写一条语句

B.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C.在C程序中,无论是整数还是实数,都能被准确无误地表示

D.在C程序中,%是只能用于整数运算的运算符

41. 以下符合C语言语法的赋值表达式是( B )

Ad=9+e+f=d+9 B d=9+e,f=d+9

Cd=9十e,e++,d十9 Dd=9十e++=d十7

42. 在C语言中,要求运算数必须是整型的运算符是。( B )

A./ B .++ C. != D.%

43. 若以下变量均是整型,且num=sum=7;则执行表达式sUM=num++,sUM++,++num后sum 的值为( A )

A.7 B .8 C. 9 D .10

44. 在C语言中,int、char和short种类型数据在内存中所占用的字节数( D )

A.由用户自己定义

B.均为2个字节

C.是任意的

D.由所用机器的机器字长决定

45. 若有说明语句:char c='\72'则变量c ( A )

A.包含1个字符

B.包含2个字符

C.包含3个字符

D.说明不合法,c的值不确定

46. 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( A )

A. 2.500000

B.2.7500OO

C. 3.500000

D. 0.000000。

47. sizeof(float)是: ( B )

A.一个双精度型表达式

B.一个整型表达式

C.一种函数调用

D.一个不合法的表达式

48. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( C )

A.int

B. float

C.double

D.不确定

49. 在C语言中, char型数据在内存中的存储形式是( D )

A.补码

B.反码

C.原码

D.ASCII码

50. 设变量n为f1oat类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是( B )

A. n=(n*100+0.5)/100.0

B.m=n*100+0.5 ,n= m/100.0

C. n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

51. 表达式18/4*sqrt(4.0)/8值的数据类型为( C )

A. int

B.float

C.double

D.不确定

52. 设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为:(C )

A.0~255

B. 0~32767

C. 0~65535

D.0~2147483647

52. 设有说明: char w; int x; f1oat y; double z;则表达式w* x+z一y值的数据类型为( D )

A.float

B.char

C.int

D.double

54. 设以下变量均为int类型,则值不等于7的表达式是( C )

A.(x= y= 6, x+y,x+1)

B.(x= y= 6,x+y,y+1)

C.(x= 6,x+1,y= 6,x+y)

D.(y=6,y+l,x = y,x+1)

55. printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式( B )

A.从左起输出该字串,右补空格

B.按原字符长从左向右全部输出

C.右对齐输出该字串,左补空格

D.输出错误信息

56. 若x ,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是:( D )

A .scanf(" %d%lx,%le",&x,&y,&z);

B .scanf("%2d * %d%lf"&x,&y,&z );

C .scanf("%x %* d%o",&x,&y); D. scanf("%x%o%6.2f",&x,&y,&z)

57. 语句中,( C)是错误的。

A. x=x+1 ; B .x=x+y ;

C..x+y=x ; D .x=4;

58.以下符号中不能作为标识符的是:(B)

A._256

B.void

C.scanf

D.Struct

59. 按照标识符的要求,(A )符号不能组成标识符。

A.连接符B下划线 C.大小写字母 D.数字字符

60. 下面不能正确表示a*b/(c*d)的表达式是:(A)

A.(a*b)/c*d

B.a*b/(c*d)

C.a/c/d*b

D.a*b/c/d

61. 下列运算符中,运算对象必须是整型的是:(B)

A./

B.%=

C.= D&

62. 若x,y,z均被定义为整数,则下列表达式能正确表达代数式1/(x*y*z)的是:(B)

A.1/x*y*z

B.1.0/(x*y*z)

C.1/(x*y*z) D1/x/y/(float)z

63. 已知a,b均被定义为double型,则表达式:b=1,a=b+5/2的值为:(D)

A.1

B.3

C.3.0

D.3.5

64. 如有int a=11;则表达式(a++*1/3)的值是(B)

A.0

B.3

C.4

D.12

65. 在下列运算符中,优先级最低的是:(A)

A.|| B!= C.< D.+

66. 表达式9!=10的值为:(D)

A.非零值

B.true

C.0

D.1

67. 能正确表示x>=3或者x<1的关系表达式是:(C)

A.x>=3 or x<1

B.x>=3|x<1

C..x>=3||x<1

D.x> =3||x<1

68. 下列运算符中优先级最高的是:(A)

A.!

B.%

C.-=

D.&&

69. 下列给字符数组初始化中,(A )是正确的。

A.char s2[3]="xyz" ;

B. char s1[ ]="abcd";

C. char s3[ ][3]={'a','x','y'};

D. char s4[2][3]={"xyz","mnp"};

70. 对于int * pa[5];的描述,(A )是正确的。

A .pa是一个指向数组的指针,所指向的数组是5个int型元素

B .pa是一个指向某数组中第5个元素的指针,该元素是int型变量

C .pa是一个具有5个元素的指针数组,每个元素是一个int型指针

D .pa[5]表示某数组的第5个元素的值

71. 设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是( B )

A. (a+B) *h/2

B. (1/2)*(a+B) *h

C. (a+B) *h*1/2

D. h/2*(a+B)

72. 以下符号中不能作为标识符的是:C

A._256

B.r32

C.int

D.e231

73. 已知a,b均被定义为double型,则表达式:a=5/2的值为:(D)

A.1

B.3

C.3.0

D.2.5

74.下面程序的输出是 B.

#include

void main()

{int x=023;

printf("%d\n",--x);

}

A. 17

B.18

C.23

D. 24

75.下面合法的C语言字符常量是______A____.

A.'\t'

B."A"

C. 65

D.A

76.C语言提供的合法的数据类型关键字是_____B____.

A. Double

B. short

C. integer

D.Char

77.设int a=12,则执行完语句a+=a-=a*a后,a的值是____D____

A.552

B.264

C.144

D.-264

78.执行下面程序中的输出语句后,输出结果是____B__.

#include

void main()

{int a;

printf("%d\n",(a=3*5,a*4,a+5));

}

A.65

B.20

C.15

D. 10

79.以下程序的输出结果是____D_____.

#include

void main()

{ int x=10,y=10;

printf("%d %d\n",x--,--y);

}

A. 10 10

B. 9 9

C.9 10

D.10 9

80.设有如下定义:

int x=10,y=3,z;

则语句

printf("%d\n",z=(x%y,x/y));

的输出结果是_____D_____.

A. 1

B.0

C. 4

D. 3

81.若已定义int a,则表达式a=10,a+10,a++的值是__B_.

A. 20

B. 10

C. 21

D. 11

82.已知有double型变量x=2.5,y=4.7,整型变量a=7,

则表达式x+a%3*(int)(x+y)%2/4 的值是_____B____.

A. 2.4

B. 2.5

C. 2.75

D. 0

83.若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是____C____.

A. 5.5

B. 5

C. 3

D. 4.0

84.设有以下语句:int x=10;x+=3+x%(3),则x的值是.____A_____

A. 14

B. 15

C. 11

D. 12

85.若d为double型变量,则表达式d=1,d+5,d++的值是_____D__.

A. 1

B. 6.0

C. 2.0

D. 1.0

86.若有定义int a=12,n=5,则表达式a%=(n%2)运算后,a的值______A____.

A. 0

B. 1

C. 12

D. 6

87.若有定义int x=3,y=2和float a=2.5,b=3.5,则表达式:(x+y)%2+(int)a/(int)b的值是__D__.

A. 0

B. 2

C. 1.5

D. 1

88.C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符____C____.

A. 必须为字母

B. 必须为下划线

C. 必须为字母或下划线

D. 可以是字母,数字或下划线中的任意一种

89.执行下列程序段后的输出结果是_____A____.

int x=1,y=1,z=1;

x+=y+=z;

printf("%d\n",x

A. 3

B. 2

C. 1

D. 4

90.设ch是char型变量,值为'A',则表达式ch=(ch>='A' && ch<='Z')?ch+32:ch的值是__B___.

A. Z

B. a

C. z

D. A

91.设x 、y 、z 、t均为int型变量,则执行以下语句后,t的值为____C_____.

x=y=z=1;

t=++x || ++y && ++z;

A. 不定值

B. 4

C. 1

D. 0

二、判断题

1. C语言中int 型是所占字节最短的数据类型。标准答案:N

2..逻辑运算符中优先级最高的运算符是“&&”。标准答案:N

3.在C语言中实型包括float 型和double 型,它们两个类型存放数据范围相同。标准答案:N

4.语句int*p():定义了一个指向函数的指针。

5.在C语言中,数据类型的转换必须是显式的。

6.发生传值调用时,形参和实参各占一个独立的存储空间。

7.C语言不能定义字符串变量。

8.字符串’hello,world”在内存中存放时,占用11个字节的空间。

9.设y为int 型变量,请写出描述“y是奇数”的表达式y%2==0。标准答案:N

10.已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是1。标准答案:N

11.若有定义,int a,*p=&a;则scanf(“%d”,*p);是正确的赋值。标准答案:N

12.表达式pow(2.8,sqrt(double (x)))值的数据类型为float 型。标准答案:N

13.在C语言中,表示逻辑“真”值用非零的数字。标准答案:Y

14.C语言中的标识符只能由数字和字母组成。标准答案:N

15.‘A’<=ch<=’Z’是判断char 型变量ch是否为大写字母的表达式。标准答案:N

16.C语言中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。标准答案:N

17.在C语言中,(int )和int 区别在于(int )是运算符,是强制转换成整型,int 是变量类型说明。标准答案:Y

18.C语言中的基本数据类型包括整型、实型、字符型和字符串型。标准答案:N

19表达式a++||b++,若a++的值为非零,则计算机不执行b++。标准答案:Y

20表达式a++&&b++,无论在什么情况下,都要执行a++和b++。标准答案:N

21.若s是int 型变量,且s=6,则s%2+(s+1)%2的值为6.5。标准答案:N

22.运算符的优先级正确排序是:

赋值运算符<逻辑运算符<关系运算符<算术运算符。标准答案:N

23.可以在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值.标准答案:N

24C语言中用“1”表示逻辑值“假”,用“0”表示逻辑值“真”。标准答案:N

25.若a是int 型变量,则(a=4*5,a*2),a+6的值为26。标准答案:Y

26.(x>=1)&&x<=10能正确表示当x的取值在[1,10]范围内为真,否则为假。标准答案:Y

27.若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是1。标准答案:Y

28.C语言规定:标识符应由字母、下划线和数字组成,且可以是上述字符的任意组合,其长度也是任意的。标准答案:N

29.C语言各种运算符中!的优先级最高。标准答案:Y

30.若有定义int i=3;则表达式i++和i的值都是4。标准答案:Y

31.C语言的所有运算符运算方向都是从左到右。标准答案:N

32.C语言中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。标准答案:N

33.若有程序段int a,b;scanf(“%d,%d”,&a,&b);则从键盘输入3040时是正确的。标准答案:N

34.逻辑运算符两侧运算对象的数据类型只能是整型或字符类型。标准答案:N

35.字符串是C语言中一种基本数据类型,字符串总是以‘\n’作为结束标志。标准答案:N

36.C语言中,逻辑运算符&&优先级高于逻辑运算符||。标准答案:Y

37.C语言中运算对象必须是整型的运算符是“/”。标准答案:N

38.C语言中,if(x>y&&!x=y);是正确的if语句形式。标准答案:N

39.条件“22&&x<3&&x<-10。标准答案:N

40.i=0,j=1,语句if(j++||++i);执行后i、j的值分别是1、2。标准答案:Y

C语言中的运算符总结解读

C语言中的运算符总结 C语言中的操作符:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员。 1.算术操作符:+ - * / % 1除了% 操作符之外,其他的几个操作符均可以作用于整数和浮点数。 2对于/ 操作符,如果两个操作数都为整数,执行整数除法;而只要有浮点数执行的就是浮点数除法。 3% 操作符的两个操作数必须为整数,返回的是整除之后的余数。 2.移位操作符: << 左移操作符和 >> 右移操作符(针对二进制位、是对整数的操作 1左移操作符移位规则:左边丢弃、右边补0。 2右移操作符移位规则:(1算术移位:左边补符号位,右边丢弃。 (2逻辑移位:左边补0,右边丢弃。 注:对于移位运算符,不能移动负数位,这个是标准未定义的。 3.位操作符:& 按位与 | 按位或 ^ 按位异或(操作数都必须是整数,是针对二进制数的操作 4.赋值操作符:= 可以重新为变量赋值(赋值操作符是可以连续使用的,从右向左执行,不建议使用。 5.复合赋值符:+= = *= /= %= >>= <<= &= |= ^= 6.单目操作符:! 逻辑反操作(真---假

- 负值+ 正值 & 取地址从内存中取地址,不能从寄存器register 中取址。 sizeof 操作数的类型长度(以字节为单位 ~ 一个数的二进制按位取反 -- 前置、后置-- ++ 前置、后置++ (1前置++和--:先自增后使用,表达式的值是自增之后的值。 先自减后使用,表达式的值是自减之后的值。 (2后置++和--:先使用再自加。 先使用再自减。 * 间接访问操作符(解引用操作符 (类型强制类型转换 7.关系操作符:> >= < <= != 不相等 == 相等 注:== 相等 = 赋值,二者易混淆,需注意。 8.逻辑操作符:&& 逻辑与|| 逻辑或 注:逻辑与、逻辑或是判断真假的,按位与、按位或是对二进制数进行操作的。 对逻辑与操作,只要有一个为假,便不必再进行后边的计算;对逻辑或操作,只要有一个为真,便不必再进行后边的操作。 9.条件操作符(三目操作符:exp1 ? exp2 : exp3 先计算表达式1 的值,如果表达式1 为真,整个表达式的值就是表达式 2 的值,如果为假,整个表达式的值就是表达式 3 的值。

C语言运算符大全 (2)

C语言运算符大全C语言的内部运算符很丰富,运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言有三大运算符:算术、关系与逻辑、位操作。另外,C还有一些特殊的运算符,用于完成一些特殊的任务。 表2-5列出了C语言中允许的算术运算符。在C语言中,运算符“+”、“-”、“*”和“/”的用法与大多数计算机语言的相同,几乎可用于所有C语言内定义的数据类型。当“/”被用于整数或字符时,结果取整。例如,在整数除法中,10/3=3。 一元减法的实际效果等于用-1乘单个操作数,即任何数值前放置减号将改变其符号。模运算符“%”在C 语言中也同它在其它语言中的用法相同。切记,模运算取整数除法的余数,所以“%”不能用于float和double类型。 最后一行打印一个0和一个1,因为1/2整除时为0,余数为1,故1%2取余数1。 C语言中有两个很有用的运算符,通常在其它计算机语言中是找不到它们的—自增和自减运算符,++和--。运算符“++”是操作数加1,而“--”是操作数减1,换句话说:x=x+1;同++x;x=x-1;同--x; 自增和自减运算符可用在操作数之前,也可放在其后,例如:x=x+1;可写成++x;或x++;但在表达式中这两种用法是有区别的。自增或自减运算符在操作数之前,C语言在引用操作数之前就先执行加1或减1 操作;运算符在操作数之后,C语言就先引用操作数的值,而后再进行加1或减1操作。请看下例: x=10; ;y=++x;

此时,y=11。如果程序改为: x=10;y=x++; 则y=10。在这两种情况下,x都被置为11,但区别在于设置的时刻,这种对自增和自减发生时刻的控制是非常有用的。在大多数C编译程序中,为自增和自减操作生成的程序代码比等价的赋值语句生成的代码 要快得多,所以尽可能采用加1或减1运算符是一种好的选择。 。下面是算术运算符的优先级: :最高++、- -- -(一元减) *、/、%最低+、-编译程序对同级运算符按从左到右的顺序进行计算。当然,括号可改变计算顺序。C语言 处理括号的方法与几乎所有的计算机语言相同:强迫某个运算或某组运算的优先级升高。 关系运算符中的“关系”二字指的是一个值与另一个值之间的关系,逻辑运算符中的“逻辑”二字指的是连接关系的方式。因为关系和逻辑运算符常在一起使用,所以将它们放在一起讨论。关系和逻辑运算符概念中的关键是True(真)和Flase(假)。C语言中,非0为True,0为Flase。使用关系或逻辑运算符的表达式对Flase和Ture分别返回值0或1(见表2-6)。 表2-6给出于关系和逻辑运算符,下面用1和0给出逻辑真值表。关系和逻辑运算符的优先级比算术运算符低,即像表达式10>1+12的计算可以假定是对表达式10>(1+12)的计算,当然,该表达式的结果为Flase。在一个表达式中允许运算的组合。例如: 10>5&&!(10<9)||3<=4 这一表达式的结果为True。

C语言运算符大全

C语言运算符大全 C语言的内部运算符很丰富,运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言有三大运算符:算术、关系与逻辑、位操作。另外,C还有一些特殊的运算符,用于完成一些特殊的任务。 2.6.1算术运算符 表2-5列出了C语言中允许的算术运算符。在C语言中,运算符“+”、“-”、“*”和“/”的用法与大多数计算机语言的相同,几乎可用于所有C语言内定义的数据类型。当“/”被用于整数或字符时,结果取整。例如,在整数除法中,10/3=3。 一元减法的实际效果等于用-1乘单个操作数,即任何数值前放置减号将改变其符号。模运算符“%”在C语言中也同它在其它语言中的用法相同。切记,模运算取整数除法的余数,所以“%”不能用于float和double类型。 最后一行打印一个0和一个1,因为1/2整除时为0,余数为1,故1%2取余数1。 2.6.2自增和自减 C语言中有两个很有用的运算符,通常在其它计算机语言中是找不到它们的—自增和自减运算符,++和--。运算符“++”是操作数加1,而“--”是操作数减1,换句话说:x=x+1;同++x;x=x-1;同--x; 自增和自减运算符可用在操作数之前,也可放在其后,例如:x=x+1;可写成++x;或x++;但在表达式中这两种用法是有区别的。自增或自减运算符在操作数之前,C语言在引用操作数之前就先执行加1或减1操作;运算符在操作数之后,C语言就先引用操作数的值,而后再进行加1或减1操作。请看下例: x=10; ;y=++x; 此时,y=11。如果程序改为: x=10;y=x++; 则y=10。在这两种情况下,x都被置为11,但区别在于设置的时刻,这种对自增和自减发生时刻的控制是非常有用的。在大多数C编译程序中,为自增和自减操作生成的程序代码比等价的赋值语句生成的代码 要快得多,所以尽可能采用加1或减1运算符是一种好的选择。 。下面是算术运算符的优先级: :最高++、- -- -(一元减) *、/、%最低+、-编译程序对同级运算符按从左到右的顺序进行计算。当然,括号可改变计算顺序。C语言 处理括号的方法与几乎所有的计算机语言相同:强迫某个运算或某组运算的优先级升高。 2.6.3关系和逻辑运算符 关系运算符中的“关系”二字指的是一个值与另一个值之间的关系,逻辑运算符中的“逻辑”二字指的是连接关系的方式。因为关系和逻辑运算符常在一起使用,所以将它们放在一起讨论。关系和逻辑运算符概念中的关键是True(真)和Flase(假)。C语言中,非0为True,0为Flase。使用关系或逻辑运算符的表达式对Flase和Ture分别返回值0或1(见表2-6)。

c语言34种运算符

C语言运算符 算术运算符 TAG:运算符,数据类型 TEXT:算术运算符对数值进行算术运算,其中:加、减、乘、除、求余运算是双目运算。其结果可以是整数、单精度实数和双精度实数。自增、自减运算是单目运算,其操作对象只能使整型变量,不能是常量或表达式等其他形式。 REF:.TXT,+运算符.txt,-运算符.txt,*运算符.txt,/运算 符.txt,%运算符,++运算符,--运算符 加+ TAG:算术运算符,运算符,数据类型 TEXT:双目运算符,算数加法。单目运算符,表示正数。REF:.TXT,算数运算符.txt 减- TAG:算术运算符,运算符,数据类型 TEXT:双目运算符,算数减法。单目运算符,表示负数。REF:.TXT,算数运算符.txt 乘* TAG:算术运算符,运算符,数据类型 TEXT:*,双目运算符,算数乘法。 REF:.TXT,算数运算符.txt

除/ TAG:算术运算符,运算符,数据类型 TEXT:/,双目运算符,算数除法;如果两个参与运算的数是整数,表示整除,舍去小数部分。 如5.0/2等于2.5,而5/2等于2。 REF:.TXT,算数运算符.txt 取余% TAG:算术运算符,运算符,数据类型 TEXT:/,双目运算符,算数除法;如果两个参与运算的数是整数,表示整除,舍去小数部分。 如5.0/2等于2.5,而5/2等于2。 REF:.TXT,算数运算符.txt 自加++ TAG:算术运算符,运算符,数据类型 TEXT:单目运算符,针对整数运算,可以放在运算数的两侧,表示运算数增1。 REF:.TXT,算数运算符.txt 自减-- TAG:算术运算符,运算符,数据类型 TEXT:单目运算符,针对整数运算,可以放在运算数的两侧,表示运算数减1。

c语言位运算符简介举例

c语言位运算符 C语言既具有高级语言的特点,又具有低级语言的功能。 所谓位运算是指进行二进制位的运算。 C语言提供的位运算: 运算符含义 & 按位与 | 按位或 ∧按位异或 ∽取反 << 左移 >> 右移 说明: 1。位运算符中除∽以外,均为二目(元)运算符,即要求两侧各有一个运算了量。 2、运算量只能是整形或字符型的数据,不能为实型数据。 “按位与”运算符(&) 规定如下: 0&0=0 0&1=0 1&0=0 1&1=1 例:3&5=? 先把3和5以补码表示,再进行按位与运算。 3的补码:00000011 5的补码:00000101 -------------------------------------------------------------------------------- &: 00000001 3&5=1 “按位或”运算符(|)

规定如下: 0|0=0 0|1=1 1|0=1 1|1=1 例:060|017=? 将八进制数60与八进制数17进行按位或运算。 060 00110000 017 00001111 -------------------------------------------------------------------------------- |: 00111111 060|017=077 “异或”运算符(∧),也称XOR运算符 规定如下: 0∧0=0 0∧1=1 1∧0=1 1∧1=0 例:57∧42=? 将十进制数57与十进制数42进行按位异或运算。 57 00111001 42 00101010 -------------------------------------------------------------------------------- ∧: 00010011 57∧42=19 “取反”运算符(∽) 规定如下: ∽0=1 ∽1=0 例:∽025=? 对八进制数25(即二进制0000000000010101)按位求反。

C语言中条件运算符的语法为

条件运算符的语法为: (条件表达式)?(条件为真时的表达式):(条件为假时的表达式) 例如: x=ay?"greater than":x==y?"equal to":"less than" 它等价于: (x>y)?"greater than":((x==y)?"equal to":"less than") 当x>y时,值为"greater than",x==y时,值为"equal to",否则,值为"less than"。条件运算符的嵌套可读性不够好。 在一个条件运算符的表达式中,如果后面两个表达式的值类型相同,均为左值,则该条件运算符表达式的值为左值表达式。例如: int x=5; long a,b; (x?a:b)=1;//ok:因为a和b都是左值 (x?x:a)=2;//error:x和a不同类型。编译器将其解释为(1ong)x和a (x==271:a)=3;//error:1非左值 "(x?a:b)=1"表示当x为0时,b=1,否则a=1。这里的括号是必须的,否则将被看作x?a:(b=1)。"(x?x:a)=2”中,尽管x是左值,a也是左值,但x与a不同类型,条件运算符要对其进行操作数的隐式转换,使之成为相同的类型。任何被转换的变量都不是左值。 ->在C中,条件运算符是不能作左值的,所以"(x?a:b)=1;"将通不过编译。 getchar 函数名: getchar 功能: 从stdio流中读字符 用法: int getchar(void); 注解:

C语言中的逻辑运算符和位运算符总结

一、逻辑运算符: 包括:1。&&逻辑与 2。||逻辑或 3。!逻辑非 逻辑运算符用于对包含关系运算符的表达式进行合并或取非 对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。关于逻辑运算符的解释 请注意:任何使用两个字符做符号的运算符,两字符之间不应有空格,即将==写成= =是错误的。 假设一个程序在同时满足条件a<10和b==7时,必须执行某些操作。应使用关系运算符和逻辑运算符“与”来写这个 条件的代码。用&&表示“与”运算符,该条件代码如下: (a<10) && (b==7); 类似地,“或”是用于检查两个条件中是否有一个为真的运算符。它由两个连续的管道符号(||)表示。如果上例 改为:如果任一语句为真,则程序需执行某些操作,则条件代码如下: (a<10) || (b==7); 第三个逻辑运算符“非”用一个感叹号(!)表示。这个运算符对表达式的真值取反。例如,如果变量s小于10,程序 程序需执行某些操作,则条件代码如下: (s<10) 或 (!(s>=10)) //s不大于等于10 关系运算符和逻辑运算符的优先级一般都低于算术运算符。例如,5>4+3的计算与5>(4+3)运算符是一样的,即 先计算4+3,再执行关系运算。此表达示的结果为“假”,即,将返回0。 下面的语句 printf("%d",5>4+3); 将输出 0 可以总结为:&&的结果是真真为真。||的结果是假假为假。 与A&&B 只有A B都为真才是真 或A||B 只有A B都为假才是假 非 ~A A为真时,此式为假 二、位运算符: 包括:1。&位与符 2。|位或符 3。^位异或符 4。~位取反符 以操作数12为例。位运算符将数字12视为1100。位运算符将操作数视为位而不是数值。数值 可以是任意进制的:十进制、八进制或十六进制。位运算符则将操作数转化为二进制,并相应地返回1或0。 位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转

逻辑运算符和表达式(c语言)

南京高等职业技术学校 课堂教学设计 授课时间:2014年11月6日第11周星期四教学目标教学准备 授课教师课时课程通过本节课的学习,学生能够: 1.清晰地说出各种逻辑运算符; 2.正确运算出逻辑表达式的值,并 通过程序验证结果; 重点教案□√ 马丽娟 1 C语言多媒体课件□√班级授课地点课题教学讲义□ 512212 机房4.2逻辑运算符与逻辑表达 式 1.逻辑表达式的求值运算; 2.逻辑表达式的求值优化。 学生工作页□ 课堂特殊要求(指教师、学生的课前准备活动等) 教师:安装Win-TC程序难点 教具□√ 逻辑表达式的求值优化授课形式 理论讲授课 教学环节时间分配教师活动学生活动教学方法媒体手段导入新课 5 提出问题,并举例说明听讲、思考、回答讲授法PPT 新课讲授20 讲授、分析听讲、讨论并记录讲授法PPT 巩固练习15 布置任务、巡视、答疑思考、编程并回答问题练习法Win-TC 课堂小结 3 归纳、总结听讲、回答问题讲授法PPT 布置作业 2 布置作业记录讲授法PPT 板书设计 §4.2 逻辑运算符与逻辑表达式 ?逻辑运算符:&&、||、! ?逻辑表达式的值:非0即1 ?逻辑运算的求值优化工作任务/教学情境设置 无课后作业 书面作业:P52 随堂练习 课后反思

教案纸 教学内容 4.2 逻辑运算符与逻辑表达式 一、复习导入(5min) 1. 复习:请学生说出关系运算符有哪些? 请学生回答关系运算表达式的值? 教师进行补充。 2.导入新课: 1、学生参加技能大赛培训的条件? ?扎实的专业知识与较高的实践能力 教师强调与的关系 2、参加技能大赛集训而停课的条件? ?移动互联或智能家居 教师强调或的关系 3、学生回答引入禁烟区的条件? ?没有吸烟非 教师强调非的关系 二、新课讲授(20min) 逻辑运算符 1.教师根据逻辑关系给出三种逻辑运算符的表示形式: &&、||、! 2.教师利用具体的表达式关系分析各种逻辑运算符的作用: 逻辑与相当于英语中的and; 逻辑或相当于英语中的or; 逻辑非相当于英语中的no; 3.教师根据具体的逻辑关系引出逻辑表达式的概念及表示形式: 表达式1&&表达式2 a&&b 表达式1||表达式2 a || b !表达式!a

c语言中逻辑运算符和逻辑表达式只是定总结

逻辑运算符和逻辑表达式 (一)逻辑运算符及其优先次序 1.&& (逻辑与) 相当于其他语言中的AND 2.|| (逻辑或) 相当于其他语言中的OR 3.! (逻辑非) 相当于其他语言中的NOT 例:a&&b 若a,b为真,则a&&b为真。 a||b 若a,b之一为真,则a||b为真。 !a 若a为真,则!a为假。 优先次序: ?逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符 ?逻辑非>算数运算符>关系运算符>&&和||>赋值运算符>逗号运算符(二)逻辑表达式 ?用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式 ?逻辑表达式的值应该是一个逻辑量“真”或“假”。 任何非零的数值都被认作“真” 例:设a=4,b=5: !a的值为0 a&&b的值为1 a||b的值为1 !a||b的值为1 4&&0||2的值为1 例:5>3&&8<4-!0 (从左向右运算)

表达式值为0 1)!0=1 2)4-1=3 3)5>3值为1 8<3值为0 4)1&&0值为0 (三)短路现象 在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&&b&&c 只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。 (2)a||b||c 只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c 例:int m=10,n=12,a=1,b=3,c=14,d=7,i,j; <1>i=(m=a>b)&&(n=c>d); printf(“%d,%d\n”,m,n); /*输出值:0,12 */ j=(m=a>b)||(n=c>d); printf(“%d,%d\n”,m,n); /*输出值:1,12 */ printf(“%d,%d\n”,i,j); 输出值:0,1 <2>i=(m=ad); printf(“%d,%d\n”,m,n); /*输出值:1,1 */ j=(m=ad); printf(“%d,%d\n”,m,n); /*输出值:1,1 (应该输出的为上一步的n为1,不等于12) */ printf(“%d,%d\n”,i,j); 输出值:1,1

C语言中的表达式及其知识要点

C语言中的表达式及其知识要点 绍兴文理学院沈红卫 C语言中数据类型、运算符等语法点最终归一到表达式(expression)。表达式是C语言的重点和难点。 何为表达式?表达式就是,由运算符、变量和常量组成的具有一个确定结果(值)的一个式子。由于C语言中运算符的广泛性和广义性,所以,C语言中的表达式也是广义的一个概念,与数学中的表达式既有相同之处,又有许多不同的地方。例如:y=x=3,这是一个赋值表达式;x+3,y*5,这也是一个表达式,是逗号表达式,因为“,”(逗号)在C里也是一个运算符。这些是数学所没有的。 说它是重点,是因为几乎所有语句都会涉及到表达式;说它是难点,是因为表达式的广义性,以及求解表达式的复杂性。 为了学好表达式,首先必须掌握C语言中的表达式的种类。C语言表达式的种类较多,主要有以下类型: 算术表达式:大家最熟悉的,例如:x+5*y,算术运算的表达式 关系表达式:x>=5,x<6,x==8,大小关系判断的表达式 逻辑表达式:ans==’y’||ans==’Y’,与、或、非三种逻辑运算的表达式 赋值表达式:x=6+y,进行变量赋值的表达式 条件表达式:x>y?1:0,如果x>y则取1,否则取0 逗号表达式:x+3,y*5,z-3,有逗号运算符组成的表达式 表达式结果求解是必须掌握的内容。求解一个表达式,必须使用三条规则:一是混合运算规则;二是优先级规则;三是结合性规则。 混合运算规则:当表达式涉及到不同的数据类型时,必须使用该规则,以确定表达式的结果的类型。该规则即教材P35中的“表达式中的自动类型转换规则”。 优先级规则:表达式涉及到多种运算符、优先级又各不相同时,必须使用该规则,就好像数学中的“先乘除后加减”。每种运算符的优先级参见教材P434“附录C”。例如:假设x=3,则算术表达式x+x*5,先乘后加,结果等于18。再如:假设x=3,则逻辑表达式x>5

(完整word版)C语言运算符与表达式的练习题答案

C语言运算符与表达式的练习题 单项选择题 (1)以下选项中,正确的 C 语言整型常量是(D)。 A. 32L B. 510000 C. -1.00 D. 567 (2)以下选项中,(D)是不正确的 C 语言字符型常量。 A. 'a' B. '\x41' C. '\101' D. "a" (3)字符串的结束标志是(C)。 A. 0 B. '0' C. '\0' D. "0" (4)算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 (5)逻辑运算符中,运算优先级按从高到低依次为(D)。 A. && ! || B. || && ! C. && || ! D. ! && || (6)表达式!x||a==b 等效于(D)。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) (7)设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是(A)。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 *(8)设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值是(B)。 A. 3 B. 0 C. 9 D. -12 (9)在以下一组运算符中,优先级最低的运算符是(D)。 A. * B. != C. + D. = (10)设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是(B,上机13)。 A. 6 B. 12 C. 15 D. 表达式出错 (11)若已定义 x 和 y为double 类型,则表达式的值是(D)。

c语言中的关系运算符和逻辑运算符

1.逻辑运算符 逻辑运算符是指用形式逻辑原则来建立数值间关系的符号。 Turbo C的逻辑运算符如下: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 操作符作用 ───────────────────────────── && 逻辑与 || 逻辑或 ! 逻辑非 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.关系运算符 关系运算符是比较两个操作数大小的符号。 Turbo C的关系运算符如下: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 操作符作用 ───────────────────────────── > 大于 >= 大于等于 < 小于 <= 小于等于 == 等于 != 不等于 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━关系运算符和逻辑运算符的关键是真(true)和假(false)的概念。Turbo C中 true可以是不为0的任何值, 而false则为0。使用关系运算符和逻辑运算符表达式时, 若表达式为真(即true)则返回1, 否则, 表达式为假(即false), 则返回0。 例如: 100>99 返回1 10>(2+10) 返回0 !1&&0 返加0 对上例中表达式!1&&0, 先求!1和先求1&&0将会等于出不同的结果, 那么何 者优先呢? 这在Turbo C中是有规定的。有关运算符的优先级本节后面将会讲到。 3.按位运算符

Turbo C和其它高级语言不同的是它完全支持按位运算符。这与汇编语言的位操作有些相似。 Turbo C中按位运算符有: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 操作符作用 ──────────────────────────── & 位逻辑与 | 位逻辑或 ^ 位逻辑异或 - 位逻辑反 >> 右移 << 左移 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符 型和整数型变量以及它们的变体, 对其它数据类型不适用。 关系运算和逻辑运算表达式的结果只能是1或0。而按位运算的结果可以取0 或1以外的值。 要注意区别按位运算符和逻辑运算符的不同, 例如, 若x=7, 则x&&8 的值为真(两个非零值相与仍为非零), 而x&8的值为0。 移位运算符">>"和"<<"是指将变量中的每一位向右或向左移动, 其通常形式为: 右移: 变量名>>移位的位数 左移: 变量名<<移位的位数 经过移位后, 一端的位被"挤掉", 而另一端空出的位以0 填补, 所以, Turbo C中的移位不是循环移动的。 4.Turbo C的特殊运算符 一)"?"运算符 "?"运算符是一个三目运算符, 其一般形式是: <表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则求表达式2 的值并把它作为整个表达式的值; 如果表达式1 的值为假, 则求表达式3 的值并把它作为整个表达式的值。 例如: main()

C语言程序设计 位运算

一、选择题 1、读程序片段: int x=20; printf(“%d\n”, ~x); 上面程序片段的输出结果是( ). A)02 B)–20 C)-21 D)-11 2、表达式~0x13的值是( ). A)0xFFEC B)0xFF71 C)0xFF68 D)0xFF17 3、在位运算中,操作数每右移一位,其结果相当于( ). A)操作数乘以2 B)操作数除以2 C)操作数除以4 D)操作数乘以4 4、在位运算中,操作数每左移一位,其结果相当于( ). A)操作数乘以2 B)操作数除以2 C)操作数除以4 D)操作数乘以4 5、设有以下语句: char x=3,y=6,z; z=x^y<<2; 则z的二进制值是( ). A)00010100 B)00011011 C)00011100 D)00011000 6、请读程序: struct bit {unsigned a_bit:2; unsigned b_bit:2; unsigned c_bit:1; unsigned d_bit:1; unsigned e_bit:2; unsigned word:8; }; main() {struct bit *p; unsigned int modeword; printf(“Enter the mode word (HEX):”); scanf(“%x”,&modeword); p=(struct bit *)&modeword; printf(“\n”); printf(“a_bit: %d\n”,p ->a_bit); printf(“b_bit: %d\n”,p ->b_bit); printf(“c_bit: %d\n”,p ->c_bit); printf(“d_bit: %d\n”,p ->d_bit); printf(“e_bit: %d\n”,p ->e_bit);} 若运行时从键盘输入: 96<回车> 则以上程序的运行结果是( ). A)a_bit: 1 B) a_bit: 2 C)a_bit: 2 D) a_bit: 1

C语言全部的运算符

整理自网络 C语言运算符 C语言的内部运算符很丰富,运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言有三大运算符:算术、关系与逻辑、位操作。另外,C还有一些特殊的运算符,用于完成一些特殊的任务。 2.6.1算术运算符 表2-5列出了C语言中允许的算术运算符。在C语言中,运算符“+”、“-”、“*”和“/”的用法与大多数计算机语言的相同,几乎可用于所有C语言内定义的数据类型。当“/”被用于整数或字符时,结果取整。例如,在整数除法中,10/3=3。 一元减法的实际效果等于用-1乘单个操作数,即任何数值前放置减号将改变其符号。模运算符“%”在C语言中也同它在其它语言中的用法相同。切记,模运算取整数除法的余数,所以“%”不能用于float和double类型。

最后一行打印一个0和一个1,因为1/2整除时为0,余数为1,故1%2取余数1。 2.6.2自增和自减 C语言中有两个很有用的运算符,通常在其它计算机语言中是找不到它们的—自增和自减运算符,++和--。运算符“++”是操作数加1,而“--”是操作数减1,换句话说:x=x+1;同++x;x=x-1;同--x; 自增和自减运算符可用在操作数之前,也可放在其后,例如:x=x+1;可写成++x;或x++;但在表达式中这两种用法是有区别的。自增或自减运算符在操作数之前,C语言在引用操作数之前就先执行加1或减1操作;运算符在操作数之后,C语言就先引用操作数的值,而后再进行加1或减1操作。请看下例: x=10; ;y=++x; 此时,y=11。如果程序改为: x=10;y=x++; 则y=10。在这两种情况下,x都被置为11,但区别在于设置的时刻,这种对自增和自减发生时刻的控制是非常有用的。在大多数C编译程序中,为自增和自减操作生成的程序代码比等价的赋值语句生成的代码 要快得多,所以尽可能采用加1或减1运算符是一种好的选择。 。下面是算术运算符的优先级: :最高++、- -- -(一元减) *、/、%最低+、-编译程序对同级运算符按从左到右的顺序进行计算。当然,括号可改变计

C语言位运算符:与、或、异或、取反

C语言位运算符:与、或、异或、取反、左移和右移语言位运算符:与、或、异或、取反、左移和右移 位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。 C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 C语言提供的位运算符列表: 运算符含义描述 &按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0|按位或两个相应的二进制位中只要有一个为1,该位的结果值为1 ^按位异或若参加运算的两个二进制位值相同则为0,否则为1 ~取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0<<左移用来将一个数的各二进制位全部左移N位,右补0 >>右移将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0 1、“按位与”运算符(&) 按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。 逻辑上的“与”,要求运算数全真,结果才为真。若,A=true,B=true,则 A∩B=true例如:3&5 3的二进制编码是11(2)。(为了区分十进制和其他进制,本文规定,凡是非十进制的数据均在数据后面加上括号,括号中注明其进制,二进制则标记为2)内存储存数据的基本单位是字节(Byte),一个字节由8个位(bit)所组成。位是用以描述电脑数据量的最小单位。二进制系统中,每个0

或1就是一个位。将11(2)补足成一个字节,则是00000011(2)。5的二进制编码是101(2),将其补足成一个字节,则是00000101(2) 按位与运算: 00000011(2) &00000101(2) 00000001(2) 由此可知3&5=1 c语言代码: #include main() { int a=3; int b = 5; printf("%d",a&b); } 按位与的用途: (1)清零 若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条件: 原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。

C语言运算符

C语言运算符 无论是加减乘除还是大于小于,都需要用到运算符,在C语言中的运算符和我们平时用的基本上都差不多。 运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符。大多数运算符都是二目运算符,即运算符位于两个表达式之间。单目运算符的意思是运算符作用于单个表达式。 一、赋值运算符 赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示。 注意:赋值语句左边的变量在程序的其他地方必须要声明。 得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。常数只能作为右值。 例如: count=5; total1=total2=0; 第一个赋值语句大家都能理解。 第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。这样它先total2=0;然后total1=total2;那么我们这样行不行呢? (total1=total2)=0; 这样是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的。 二、算术运算符 在C语言中有两个单目和五个双目运算符。 符号功能 +单目正 -单目负 *乘法 /除法 %取模 +加法 -减法 下面是一些赋值语句的例子,在赋值运算符右侧的表达式中就使用了上面的算术运算符:Area=Height*Width; num=num1+num2/num3-num4; 运算符也有个运算顺序问题,先算乘除再算加减。单目正和单目负最先运算。 取模运算符(%)用于计算两个整数相除所得的余数。例如: a=7%4; 最终a的结果是3,因为7%4的余数是3。 那么有人要问了,我要想求它们的商怎么办呢?

掌握C语言中基本的运算符

第3讲 运算符运算符、、表达式&类型转换 【课前思考课前思考】】 1、回忆数学中的运算符回忆数学中的运算符、、表达式表达式,,C 语言中的运算符语言中的运算符、、表达式是什么样子表达式是什么样子?? 2、能否直接将一个浮点型数据赋值给整型变量能否直接将一个浮点型数据赋值给整型变量?? 【学习目标学习目标】】 掌握C 语言中基本的运算符、表达式,掌握C 语言中数据类型转换的方法 【学习指南学习指南】】 联想数学中的运算符及表达式,找出C 语言与其区别进行学习 【重 难 点】 重点: 算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符及其优先级 “=”与“==”的区别 难点: 自增、自减运算,逻辑运算,逗号运算 【学时安排学时安排】】 学时:2学时 【知 识 点】 第3讲 运算符、表达式&类型转换 (1) 2.3 运算符与表达式 (2) 2.3.1 算术运算符与算术表达式....................................................................................2 1. 算术运算符.................................................................................................................2 2. 算术表达式.................................................................................................................3 2.3.2 自增与自减运算....................................................................................................4 1. 自增、自减运算符的使用形式.................................................................................4 2. 自增、自减运算符的优先级和结合性....................................................................5 2.3.3 关系运算符与关系表达式....................................................................................5 1. 关系运算符.................................................................................................................5 2. 关系表达式.................................................................................................................6 2.3.4 逻辑运算符与逻辑表达式....................................................................................6 1. 逻辑运算符.................................................................................................................6 2. 逻辑表达式.................................................................................................................7 2.3.5 赋值运算符与赋值表达式....................................................................................8 2.3.6 条件运算符与求字节运算符................................................................................9 1. 条件运算符.................................................................................................................9 2. 求字节运算符.. (10)

C语言位运算符(附例题讲解)

C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 12.1.1按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。 例如:9&5可写算式如下: 00001001 (9的二进制补码) &00000101 (5的二进制补码) 00000001 (1的二进制补码) 可见9&5=1。 按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清0 ,保留低八位,可作a&255运算( 255 的二进制数为0000000011111111)。 【例12.1】 main(){ int a=9,b=5,c; c=a&b; printf("a=%d\nb=%d\nc=%d\n",a,b,c); } 12.1.2按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。 例如:9|5可写算式如下: 00001001 |00000101 00001101 (十进制为13)可见9|5=13 【例12.2】 main(){ int a=9,b=5,c; c=a|b; printf("a=%d\nb=%d\nc=%d\n",a,b,c); } 12.1.3按位异或运算

按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:00001001 ^00000101 00001100 (十进制为12) 【例12.3】 main(){ int a=9; a=a^5; printf("a=%d\n",a); } 12.1.4求反运算 求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如~9的运算为: ~(0000000000001001)结果为:1111111111110110 12.1.5左移运算 左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。 例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。 12.1.6右移运算 右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如: 设a=15, a>>2 表示把000001111右移为00000011(十进制3)。 应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。 【例12.4】 main(){ unsigned a,b; printf("input a number: "); scanf("%d",&a); b=a>>5;

相关文档
最新文档