C语言基础

本文介绍C语言基础,涵盖运算符、数据类型、常量和输入输出。详细讲解了算术、逻辑、位等多种运算符的使用;阐述不同操作系统下数据类型所占字节数及取值范围;介绍各类常量特点;还提及输入输出函数scanf和printf的使用格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、运算符

1.1  算术运算符:+    -    *     /    %   ++    --

其中,前三种就是很平常的加减乘,"/" 表示的是取整,'%'表示的是取余 ,例如:

12/7 = 1,这里只取整数部分

12% 7 = 5,这里是等于余数部分

"++"是自增1运算符,其功能是使变量的值自增1;

"--"是自减1运算符,其功能是使变量值自减1。

自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式:

(1)   ++i:i 自增1后  再参与其它运算。

(2)   --i:  i 自减1后  再参与其它运算。

(3)   i++:i 参与运算后,i的值再自增1。

(4)   i--:  i 参与运算后,i的值再自减1。

如:

int x,y;

x=10;  y=x++;   //结果y=x=10, 然后  x=x+1=11

x=10; y=++x;    //结果 x=x+1=11,然后 y=x=11

同理,

x=10;  y=x--;   //结果y=x=10, 然后  x=x-1=9

x=10; y=--x;    //结果 x=x-1=9,然后 y=x=9

1.2  逻辑运算符:||    &&     !

"||"表示或,(条件1)||(条件2),只要满足其中一个条件即可,当然,这里需要注意的是:如果条件1已经满足了,那么计算机是不会去判断后面的条件2的;

"&&"表示与,(条件1)&&(条件2),需要两个条件同时满足。与上面相似的是,如果第一个条件不成立,计算机是不会执行第二个条件的。

1.3  位运算符:>>       <<        &      |      ~

这里需要注意的是:遇到位运算符首先把数转换成二进制

例如:

a=16>>2,表示将16右移2位,转换为二进制:0001 0000 >> 0000 0100 = 4,即为将1往右移动两位,还有一种算法是16/(2^2)=4;

a=16<<2,表示将16左移2位,转换为二进制:0001 0000 <<  0100 0000 = 64,即为将1往左移动两位,还有一种算法是16*(2^2)=64;

总之,左移就是乘以2的移动位数的平方,右移就是除以2的移动位数的平方。

而对于 & 和 | 则主要是用于将某位数快速置1或0,比如说:

将34的第5位置为1,首先将其转化为二进制,再通过 | 运算,有1的就合并;

34 = 2^5 + 2^1 = 0010 0010 | 0001 0000 = 0011 0010

将34的第2位置为0,首先将其转化为二进制,再通过 & 运算,只有都为1才为真;

34 = 2^5 + 2^1 = 0010 0010 & 1111 1101 = 0010 0000

1.4  赋值运算符: = 

1.5  比较运算符: >      <      >=     <=     ==      !=

1.6  特殊运算符: sizeof()

计算对象所占的字节数

1.7  逗号运算符: 只取最后一个表达式的值

例如:

a=3,b=5,c=6

若a = ( a + b,a = a + b, c + b ),那么a应该等于11;

若a = ( a + b,b = a + b, c + b ),那么a应该等于14,因为此时的b等于8。

1.8  三目运算符:(表达式1)?(表达式2):(表达式3)

如果满足表达式1,那么就取表达式2,反之,则取表达式3

举个简单的例子:a=3,b=5,(a>b)? c=0:c=1,很明显,a>b是不成立的,所以应该取c=1。

2、数据类型

数据类型(所占字节数):  int       char      float       double       short

32位操作系统                         4          1           4             8                2

16位操作系统                         2          1           4             4                1     

其中,值得注意的是char的有无符号声明

如果是无符号的unsigned char取值范围:0000 0000 ~ 1111 1111 = 0 ~ 255

如果是有符号的char 取值范围是:-128~127,因为第一位是符号位,用0、1表示正负

举个例子:

signed int a = -16;

unsigned int b = 5;

if ( a + b > 0 ) {

    printf ( " hello " );

} else {

    printf ( " world " );

}

在这个例子中,最终的结果是输出hello,为什么呢?这是因为有符号的数和无符号的数相加会转换成无符号的数,所以a会转换成一个正数。同理的是,高精度和低精度相加,会转换成高精度。

3、常量

3.1  常量:在程序运行期间值不会发生改变的整型常量:0~9     
           3.2  字符常量: 'a' ~'z'  

3.3  字符串常量(末尾默认有一个‘\0’):“hello”

3.4  浮点型(实型):3.14

3.5  指数型常量:(次方如果为负,转化之后需减;若为正,转换之后需加)

3.14*10^-5 = 3.14e-5

9.56*10^9 = 9.56e+5

3.6  标识符常量:宏定义

3.7  标识符:自定义的由字母、下划线、数字组成。首字母只能是字母或下划线。不能和关键字重名。

4、输入输出

scanf("%d",&a);//从键盘上获取值%d    %c   %s    %f

printf("%d\n",a);

printf("%3d\n",a);

%c: 字符型

%s: 字符串

%p: 输出地址

%f: 浮点型

%lf: 双精度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值