C语言数据类型、运算符、表达式小结

Part 1.数据类型、运算符、表达式

1.数据类型 

1)整数类型:int(2字节),short(2字节)--->短整型,long short(2字节),unsigned(2字节),unsigned short(2字节)---->无符号整型,unsigned long(4字节)-->无符号长整型

2)实型类型:单精度-float(4字节),双精度-double(8字节),长双精度-long double(10字节)

1byte=8bit

3)字符类型:Char(1字节)

对于计算机内部整数以二进制补码表示。

   正数的补码还是原码,负数的补码----->按位取反再加1

指数形式的常量表示:12.1345*10=12.1345e1(e前必须是数字,e后必须是整型)

2.运算符

  1. 算术运算符:%--模(两个运算数必须是整数。例:int(12.3%4) 是错的)
  2. 自增自减运算符:结合方式自右向左,不能用于常量表达式

N=m++      先操作后赋值

N=++m      先赋值后操作

例 1:int  i=2,k;

 k=(i++)+(++i)+(i++); ====>所有的前缀++先执行,在执行赋值语句。

printf(“%d,%d”,i,k); //i=5 k=9     ++i;k=i+i+i;i++;i++;

例 2:int i=2,k;

k=(++i)+(++i)+(++i);<====>++i;++i;++i;k=i+i+i;

Printf(“%d,%d”,i,k);//i=5 k=15

  1. 复合赋值运算符(+=,-=,*=,/=)
  2. 关系运算符(<,>,<=,>=,!=,==)
  3. 逻辑运算符(||,&&,!)

int a,b,c;

a=b=1

c=a++-1;

printf("%d,%d\n",a,c);// 2   0

c+=-a+++(++b||++a);===>-(a++)+(++b||++a);

printf("%d,%d",a,c);//3  -1

逻辑运算注意它的中断性,还有整体返回的值

  1. 逗号运算符(对于表达式(e1,e2),返回e2的值)
  2. 三目运算符(表达式?a:b ---真为a,假为b)

 

注意:

 %m.nf---->m为输出的总列数,n为小数位数

  例:float a=32.14;//32.15会产生四舍五入

Printf(%8.1f,a);----会左补4个空格_ _ _ _32.1

Printf(%-8.1f,a);---会右补4个空格32.1_ _ _ _

   当m<=整体列数时,这时m无效,只取一位小数位

   %s:按实际长度输出

   %m.ns:n表示从字符串左端截取n个字符输出共占m列   

 

 

   Scanf中的格式控制不仅可以有说明符,还可以包含其他字符;

   例:int a,b;

scanf(%2d%*3d%1d,);//%*3d--->跳跃多少列。123456

Printf(%d,%d,a,b);//a=12 b=6

 Scanf输入数据可以指定列数,但不可以规定精度。  

     如:scanf(%2d%4d,&x,&y);//123456---->x=12 y=3456

       Scanf(%10.2f,&f);//这是不合法的

 

  字符串输入与输出:

   输入格式%c表示输入任意一个字符,包括回车、空格和tap键等。输入时字母之间也不能输入空格。若将两个数加以区分,必须输入空格

  1.  Char x,y;int b;

     Scanf(%c%c,&x,&y);//AX--->enter===>x=A,y=X;

     Scanf(%c%d%c,&x,&b,&y);//A_3V--->enter===>x=A,b=3,y=V

                           _A3V--->enter===>不能实现将其赋值

  1. 如果通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是_____

  Scanf(%d%c%d%d%c%c%d%c,&w,&a,&x,&y,&b,&c,&z,&d);

//10A20 30BC40D

 

在输入数据时,如果遇到以下情况则该数据认为结束。

  1. 遇空格,或按回车或Tab键
  2. 按指定的宽度结束,如%3d,只取3列
  3. 遇非法输入

 

 

类型强制转换:(类型名)表达式

 如:(long)2的结果是2L  (int)4.2的结果是4.

 

与、或、异或运算

  1. a&b.    eg: 0&0=0 ; 0&1=0 ; 1&0=0 ; 1&1=1;
  2. a|b     eg:0|0=0 ; 0|1=1 ; 1|0=1 ; 1|1=1;
  3. a^b     eg:0^0=0 ; 0^1=1 ; 1^0=1 ; 1^1=1;

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值