学习c语言的第一周-----c语言语法中的一些注意事项

本文介绍了C语言的基本数据类型,包括char、unsigned char、short、unsigned short、int、unsigned int、long、long long、float、double和long double的取值范围。此外,还讲解了进制转换、运算符的规则,如类型混合运算、关系运算符的使用、逻辑运算符的短路特性和位运算。最后,提到了if语句和循环语句的注意事项,以及数组的使用和可变长数组的概念。
摘要由CSDN通过智能技术生成

一、数据类型
char: 1个字节  ;8个bit ;[-128,127]
unsigned char: 1个字节 ;8个bit ;[0,255]
short: 2个字节 ;16个bit ;[-32768,32767]
unsigned short: 2个字节 ;16个bit ;[0,65535]
int: 4个字节 ;32个bit ;[-2^31 -1,2^31-1]
unsigned int: 4个字节 ;32个bit ;[0,2^32-1]
long: **4/8个字节** ;32/64个bit ;[-2^63-1,2^63-1]
long long: 8个字节 
floar : 4个字节;32个bit;(1符号位11指数位23尾数位)最大值:3.4*10^38; 小数点后精确6位 6-7
double:8个字节;64个bit;(1符号位11指数位23尾数位)最大值:1.79*10^308;小数点后精确12位 15-16
double
long double 12个字节;
**浮点数类型中的 0 表示的是一个范围 而不是真正意义上的零 例如 float中 0表示(-0.0000001,0.0000001)**
二、进制
int 类型 
最大值  :0(31个1)最小值 :1 (31个0)
0 :32个0 
-1:32个1
三、操作符  运算符
1.类型混合运算自动扩充
char->short->int->long->float->double
signed + unsigned ==> unsigned
2.关系运算符中
**没有a==b==c这种情况
只有a==b&&b==c**

3.在逻辑运算符中
 **会出现短路特性**
 **假&&表达式  恒为假   后面表达式的结果无论是真或者假都无法改变整个逻辑表达式的结果,后面表达式将不再进行运算 这种现象称为短路特性
真||表达式  恒为真
表达式不能影响结果,所以不再进行运算**

例如 a = 0,b = 0
++a>0 || b++>0
 执行完语句 a = 1 b = 0
 && 结合性优先级 高于 ||
 int a=1,b=1,c=1
 int x = ++a>1||++b>1&&++c>1
 ++a>1||(++b>1&&++c>1)
 4.位运算
 0  &  任意值 = 0
 1  |  任意值 = 1
 右移 >>
 右边移出的位舍弃 如果是有符号(signed)的数 补符号位
 如果是无符号(unsigned)的数 补0
除了负的奇数  每向右移一位 相当于除以2
左移 <<
左边移出的位舍弃  右边补0
每向左移一位 相当于乘以2

算术优先级高于 移位运算符
234>>1+3  ==>  234>>(1+3)   ==> 234>>4
四、语句
1.if注意事项:
如果分支语句只有一条语句时 可以省略{}
但是不建议省略
if(condition);{
  //无论什么情况都会执行
}
if(condition);  表示if分支语句为空 ==> if(condition){;}
分号表示语句结束 
2.循环语句
for(;;)   括号中分号不能少  不管有没有语句
如果有多个变量时可以用逗号隔开for for(i=1,j=0;i<10&&j<10;i++,j++){}
for(;;){}  无限循环
for(;x;)  省略{}   表示只有一条语句是循环体的语句
for(x;x;x);   表示循环体语句为
for(x;x;x);{
//只执行一次  当循环执行完成之后  不属性循环
}
for(int i=0;;) 在初始化循环变量时 可以直接定义变量
但需要在 c99  gnu99模式下才被允许
gcc -std=c99 
五、数组
数组名[下标];
下标:
从0开始到数组长度减1
**注意:下标是从0开始,且最大值不能取到数组长度
数组下标不能越界**

数组越界访问可能造成逻辑错误 也可以访问错误的数组
最严重的后果是程序崩溃
下标是从0开始且连续,所以很多时候都会结果循环使用
**可变长数组
  数据类型 数组名[变量];
  int n = 0;
  scanf("%d",&n);
  int arr[n];
  注意: 可变长数组不能直接初始化  不能 = {}这种形式初始化
  必须用循环的形式进行初始化
  for(i=0;i<n;i++){
   arr[i] = 0;
  }**

 

 

 

 


  

 

 

 

 

 

 

 

 

 

 

       

 

 


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值