C语言·学习笔记(一) —— 基础数据类型、运算符

本文介绍了C语言的基础知识,包括C语言的特点、最简单的程序示例、基本数据类型(整型、字符型、浮点型)、运算符(算术、关系、逻辑、三目、按位和赋值),以及各种运算符的详细说明和实例。

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

目录

一、认识C语言

二、最简单的C语言程序

三、认识C语言基本数据类型

1、整型

2、字符型

3、浮点型 

4、空类型

四、认识C语言基本运算符

1、算术运算符

2、关系运算符

3、逻辑运算符

4、三目运算符

5、按位运算符

5.1 按位取反 (~)

5.2 按位与 (&)            

5.3 按位或 (|)            

5.4 按位异或 (^)      

5.5 左移运算符 (<<)  

5.6 右移运算符(>>)

6、赋值运算符


一、认识C语言

C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言。所以说,学习C语言基础知识是进入编程世界的必修课!

C语言的一些特点:

  • 语言简洁、紧凑,使用方便、灵活。
  • 运算符丰富。
  • 数据类型丰富。
  • 具有结构化的控制语句(如 if - else语句、while语句、do - while语句、switch语句和 for语句)。
  • 语法限制不太严格,程序设计自由度大。
  • C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
  • 用C语言编写的程序可移植性好。
  • 生成目标代码质量高,程序执行效率高。

二、最简单的C语言程序

#include <stdio.h>    //头文件          
int main()            //C程序就是执行主函数里的代码,这个主函数就是C语言中的唯一入口。
{
    printf("请输入一个正整数:\n");      //printf()是格式输出函数,在屏幕上输出内容。
    return 0;         //return是函数的返回值。
}

三、认识C语言基本数据类型

C语言的基本数据类型分为 基本类型、构造类型、指针类型、空类型四大类。一共有 9个,分别是 int、char、float、double、short、void、long、signed、unsigned。前6个使用的次数较多,最后面2个需了解。

1、整型

int:基本整数型,用于存储整数,占4个字节。

short:短整型,占2个字节,存储方式与基本整形int相同。

long:长整型,占4个字节。

long long:双长整型,占8个字节,这种数据类型一般比较少用。

2、字符型

char:字符型,用于存储单个字符,占1个字节。

3、浮点型 

float:单精度浮点型,占4个字节。

double:双精度浮点型,占8个字节。

4、空类型

void:代表任意类型,而不是空的意思。任意类型是指它的类型是未知的,还没指定的。

可以通过下面程序更直观了解。

#include<stdio.h>        //头文件
#include<stdlib.h>       //头文件

int main(){    
   	printf(" char 	 	占 %d个字节\n", sizeof(char));
   	printf(" void 	 	占 %d个字节\n", sizeof(void));
   	printf(" short 	 	占 %d个字节\n", sizeof(short));
   	printf(" int 	 	占 %d个字节\n", sizeof(int));
   	printf(" float 	 	占 %d个字节\n", sizeof(float));
   	printf(" long 	 	占 %d个字节\n", sizeof(long));
   	printf(" double  	占 %d个字节\n", sizeof(double));
   	printf(" signed  	占 %d个字节\n", sizeof(signed));
   	printf(" unsigned  	占 %d个字节\n", sizeof(unsigned));
	//   	112444844
   	return 0;
} 

四、认识C语言基本运算符

1、算术运算符

"+"  :加号,用于加法运算。
"-"   :减号,用于减法运算。
"*"   :乘号,用于乘法运算。
"/"   :除号,用于除法运算。
"%" :取余号,用于取余数运算。
"++":自增运算符。
"--"  :自减运算符。

自增运算符"++"的使用方法有两种:

1. 前缀自增运算符:++a,即先将变量a自增+1,然后再使用变量a。

2. 后缀自增运算符:a++,即先使用变量a,然后再将变量a自增+1。

#include <stdio.h>
int main()      // 主函数的类型 ,所有程序的入口,有且只有一个 
{
   	int a = 97;        //给a赋值97
   	int b = 7;
   	int c = a%b;			//求余
   	int d = a/b;			//求商 
	int e = a*b; 			//求积
    
    printf(" %d\n %d\n %d\n",c,d,e);        //输出c、d、e的值
    return 0;
}

2、关系运算符

关系运算符返回的值是一个布尔值,即1为真,0为假。

">" : 大于运算符,例如a > b。

"<" : 小于运算符,例如a < b。

">=" : 大于等于运算符,例如a >= b。

"<=" : 小于等于运算符,例如a <= b。

"==" : 等于运算符,例如a == b。

"!=" : 不等于运算符,例如a != b。

#include <stdio.h>
int main()      // 主函数的类型 ,所有程序的入口,有且只有一个 
{
    int a = 5, b = 10;        //给a、b赋值
    if (a > b) {
    printf("a > b");
    } 
    else {
    printf("a <= b");
    }
    return 0;
}

3、逻辑运算符

C语言中常见的逻辑运算符有三种:"&&"、"||"、"!"。返回一个逻辑值Ture或False。

"&&":逻辑与运算符,真真为真,否则为假。

"||" :逻辑或运算符,有真为真,否则为假。

"!" :逻辑非运算符,原真为假,原假为真。

#include <stdio.h>
int main()      // 主函数的类型 ,所有程序的入口,有且只有一个 
{
    int a = 10, b = 15, c = 20;
    if (a > 0 && b < 20){        // &&:真真为真,否则为假。
        printf("a和b均满足条件");
    } 
    else {
        printf("a和b至少有一个不满足条件");
    }
    if (a > 0 || c < 20){        // ||:有真为真,否则为假。
        printf("a和c有至少一个满足条件");
    else {
        printf("a和c均不满足条件");
    return 0;
}

4、三目运算符

格式:    表达式1 ? 表达式2 : 表达式3

表达式1 为条件表达式,如果结果为真,则返回表达式2 的值;否则,返回表达式3 的值。

#include<stdio.h>			
int main()
{
	int a = 0;
	int b = 2;
	printf("%d", a > b ? a : b);
	return 0;
}
//需要理解
#include <stdio.h>     		//标准的输入输出
int main()
{
	int a=10, b=8, c=6;
	printf("a=%d,b=%d,c=%d\n", a, b, c);
	c = a < b ? a++ : b++;
	printf("a=%d,b=%d,c=%d\n", a, b, c);
	return 0;
}

5、按位运算符

5.1 按位取反 (~)
按位取反 (~)	    ~ 运算符把 0变为 1,把 1变为 0
如下例子所示:	 ~ (0100 1001)=10110110,
假设val的类型是unsigned char,已被赋值为 2。
在二进制中,0000 0010表示2。那么,~val的值是 1111 1101,即 253。
注意:该运算符不会改变val的值,但是可以这样用:val=~val。或者直接声明一个新的变量newval=~val。
5.2 按位与 (&)            
按位与 (&)	    & 运算符通过逐位比较产生一个新值。
如果把 1看为真,0看为假,运算规则可以记为同真则真,一假则假。
如下例子所示:(1001 0011) & (0011 1101)= (0001 0001)
5.3 按位或 (|)            
按位或 (|)			| 运算符通过逐位比较产生新值。
如果把 1看为真,0看为假,运算规则可以记为一真则真。
如下例子所示:	(1001 0011) | (0011 1101)= (1011 1111)
5.4 按位异或 (^)      
按位异或 (^)	    ^ 运算符通过逐位比较产生新值。
如果两个运算对象中只有一个为 1(但不是两个都为1),结果为 1。
如下例子所示:	(1001 0011)^(0011 1101)= (1010 1110)
C语言有一个 按位异或 和 赋值运算 结合的运算符: ^=
5.5 左移运算符 (<<)  
左移运算符 (<<)      
<< 左移运算符是用来将一个数的各二进制位左移若干位,移动的位数由右操作数指定(右操作数必须是非负值)
右边空出的位用 0填补,高位左移溢出则舍弃该高位。
如下例子所示:若 a=15,即二进制表达为 00001111, a<<2 左移2位得二进制表达为 00111100。
5.6 右移运算符(>>)
右移运算符(>>)
右移运算符是用来将一个数的各二进制位右移若干位,移动的位数由右操作数指定(右操作数必须是非负值)
移到右端的低位被舍弃。
对于无符号数: 右移时左边高位补 0。		
对于有符号数: 如果原来符号位为 0(该数为正),则左边也是移入 0;
             如果符号位原来为 1(即负数),则左边移入 0还是 1,要取决于所用的计算机系统。 
移入 0的称为 "逻辑移位",即简单移位;移入1的称为"算术移位"。
算术移位:将对左边空出的部分用符号位填补								
逻辑移位:对左边空出的部分用 0填补
如下例子所示:  

	int a = -10			(十进制)
	负整数的三种表示方法各不相同:
	源码 :直接将数值按照正负数的形式翻译成二进制就可以得到原码。
	1000 0000 0000 0000 0000 0000 0000 1010 ->源码
	反码 :将源码的符号位不变,其他位依次按位取反就可以得到反码。
	1111 1111 1111 1111 1111 1111 1111 0101 ->反码
	补码 :反码 + 1就得到补码。
	1111 1111 1111 1111 1111 1111 1111 0110 ->补码

	int a = 1725		(十进制)
	a的值是八进制数 3275:
   	a:1001011111101101 		(用二进制形式表示) 
   	a>>1: 0100101111110110 	(逻辑右移时)
   	a>>1: 1100101111110110 	(算术右移时)

6、赋值运算符

	运算符		描述												
 	=		赋值运算符,把右边操作数的值赋给左边操作数。							
	+=		加并赋值运算符,把右边操作数加上左边操作数的结果赋值给左边的操作数。		
	-=		减并赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数。		
	*=		乘并赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数。		
	/=		乘并赋值运算符,把左边操作数乘以右边操作数的结果赋值给左边操作数。		
	%=		取余并赋值运算符,两个操作数取余然后赋值给左边操作数。					
	>>=		右移并复制运算符。														
	<<=		左移并赋值运算符。													
	&=		按位与并赋值运算符。														
	^=		按位异或并赋值运算符。												
	|=		按位或并赋值运算符。													

如果觉得对你有帮助的话,能否留个免费的小心心

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕卿扬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值