C语言常用知识总结
在 C 语言中,常量是一种固定值的标识符,它的值在程序执行期间不会改变。
C 语言中有几种不同类型的常量:
字符常量:用单引号括起来的单个字符,例如 'A'、'b'、'1' 等。
字符串常量:用双引号括起来的字符序列,例如 "Hello"、"goodbye" 等。
整型常量:十进制、八进制或十六进制表示的常量,例如 123、0377、0xFF 等。
浮点型常量:十进制形式的常量,例如 3.14、6.022e23 等。
常量名是大小写敏感的,通常使用大写字母表示常量。例如:
#define PI 3.14159
#define MAX_LEN 100
C语言的运算符可以分为以下几类:
- 算术运算符:包括加(+)、减(-)、乘(*)、除(/)和取模(%)等。
- 关系运算符:包括大于(>)、小于(<)、等于(==)、不等于(!=)、大于等于(>=)和小于等于(<=)等。
- 逻辑运算符:包括逻辑与(&&)、逻辑或(||)和逻辑非(!)等。
- 赋值运算符:包括赋值(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)和取模等于(%=)等。
- 位运算符:包括按位与(&)、按位或(|)、按位异或(^)、按位左移(<<)、按位右移(>>)和按位取反(~)等。
- 其他运算符:包括条件运算符(?:)、大小比较运算符(sizeof)和逗号运算符(,)等。
C语言中的逻辑运算符包括逻辑与、逻辑或和逻辑非。
逻辑与(&&):当且仅当两边的表达式都为真时,整个表达式才为真。
逻辑或(||):当两边的表达式有一边为真时,整个表达式就为真。
逻辑非(!):将原来的布尔值取反。
if ((a < b && b < c) || (!(d > e) && c < b))
{
// 当(a < b < c)或(!(d > e) && c < b)为真时执行
}
正数补码和负数补码
正数补码和负数补码是在计算机中用于表示整数的一种二进制表示方法。
在计算机中,正数补码和负数补码都使用补码的形式来表示整数。补码是由原码(即普通的二进制表示方法)转换而来的,它是在原码的基础上取反(即将每一位取反),然后再加 1。
例如,如果要将十进制数 5 转换为二进制补码,可以按照如下步骤进行:
将 5 转换为二进制,得到 101; 将 101 取反,得到 010; 将 010 加 1,得到 011,即 5 的二进制补码为 011。
对于负数补码,也是类似的,只不过要先将十进制负数转换为二进制原码,然后再转换为补码。
例如,如果要将十进制数 -5 转换为二进制补码,可以按照如下步骤进行:
将 -5 转换为二进制,得到 101; 将 101 取反,得到 010; 将 010 加 1,得到 011,即 -5 的二进制补码为 101。
标识符命名规则:
- 标识符由字母、数字、下划线组成,但必须以字母或下划线开头;
- 不能使用 C 语言的保留字(即关键字)作为标识符;
- 不能将大写字母和小写字母混合使用,但可以使用下划线;
- 不能以下划线结尾;
- 不能使用两个或以上的连续下划线;
- 不能使用多个下划线作为前缀或后缀。
示例:
• 合法标识符:my_var1、_a、b2、__a、a_b、a_b_c
• 不合法标识符:1a、1_a、a_、a__b、a__b__c、a_b
按位异或运算的运算规则如下:
0 ^ 0 = 0 0 ^ 1 = 1 1 ^ 0 = 1 1 ^ 1 = 0
例如,3 ^ 5 = 6,因为二进制表示中 3 的二进制位为 011,5 的二进制位为 101,按位异或后得到 110,即 6。
按位异或运算常用于对两个数进行比较,因为按位异或后相同的数位会得到 0,不同的数位会得到 1。例如,如果要比较两个数是否相同,可以使用按位异或运算,如果得到的结果为 0,则这两个数相同,否则不同。
按位取反运算的运算规则如下:
~0 = 1
~1 = 0
例如,~3 = -4,因为二进制表示中 3 的二进制位为 011,按位取反后得到 100,即 -4。
按位取反运算常用于计算补码。例如,负数的补码是将它的二进制表示中的每一位取反,然后将结果加 1。
三目运算符
三目运算符是一种简化版的条件运算符。它可以用来代替 if-else 语句。
三目运算符的语法如下:
result = condition ? value1 : value2v
如果 condition 为 true,则 result 的值为 value1;否则,result 的值为 value2。
例如,下面的代码使用了三目运算符:
int x = 10, y = 20;
int max = x > y ? x : y;
C 语言有几种基本的数据类型:
char
:字符型,占 1 个字节。int
:整型,占 4 个字节。float
:浮点型,占 4 个字节。double
:双精度浮点型,占 8 个字节。
还有一些附加的类型,包括 short
(短整型,占 2 个字节)、long
(长整型,占 8 个字节)和 long long
(长长整型,占 8 个字节)。
你可以在变量名之前使用关键字 signed
或 unsigned
来指定变量的符号,如 signed int
或 unsigned long
。默认情况下,整型变量是有符号的。
例如:
char ch = 'a';
int i = -100;
float f = 3.14159;
double d = 3.141592653589793;
signed int si = -100;
unsigned int ui = 100;
short s = -200;
long l = -10000;
long long ll = -10000000000;
常量
在 C 语言中,常量是一种固定值的标识符,它的值在程序执行期间不会改变。
C 语言中有几种不同类型的常量:
- 字符常量:用单引号括起来的单个字符,例如 'A'、'b'、'1' 等。
- 字符串常量:用双引号括起来的字符序列,例如 "Hello"、"goodbye" 等。
- 整型常量:十进制、八进制或十六进制表示的常量,例如 123、0377、0xFF 等。
- 浮点型常量:十进制形式的常量,例如 3.14、6.022e23 等。
- 标识常量 宏
在 C 语言中,可以使用 #define
预处理指令来定义常量,这称为标识常量。标识常量是在编译期间由预处理器替换成实际值的一种常量。
常量名是大小写敏感的,通常使用大写字母表示常量。例如:
#define PI 3.14159
#define MAX_LEN 100
宏也是使用 #define
预处理指令定义的,它是一种特殊的函数,在编译期间由预处理器替换成代码的一种工具。
#define SQUARE(x) ((x) * (x)) int x = SQUARE(5); // x 的值为 25
标识常量和宏的主要区别在于,标识常量只是简单的替换,而宏会将整个表达式替换成代码。
例如:
#define SQUARE(x) x * x int x = SQUARE(5 + 1); // x 的值为 12,而不是 36
变量
在 C 语言中,变量是程序中用于存储和操作数据的地方。变量必须先声明,然后才能使用。
声明变量的语法格式如下:
<data type> <variable name>;
其中,<data type>
是变量的类型(例如 int
、float
等),<variable name>
是变量的名称。
例如:
int x;
float f;
char c;
变量的内容空间首地址,会变成变量的首地址
在 C 语言中,每个变量都有一个内存地址,即变量在内存中的位置。可以使用 &
运算符来获取变量的内存地址。
例如:
#include <stdio.h> int main() {
int x = 10;
printf("x 的内存地址是 %p\n", &x);
return 0;
}
输出结果:
x 的内存地址是 0x7fff5d72d97c
注意,变量的内存地址只是变量在内存中的位置,并不是变量的值。如果要获取变量的值,需要使用变量的名称。
例如:
int x = 10;
int y = x; // y 的值为 10
变量的分类
C 语言中,变量可以分为几类:
- 全局变量:定义在函数外的变量,在整个程序的生命周期内都有效。全局变量的初始值为 0。
- 局部变量:定义在函数内的变量,仅在函数内部有效。局部变量的初始值不确定。
- 静态局部变量:定义在函数内的变量,使用
static
关键字修饰。静态局部变量只在函数第一次调用时初始化,之后每次调用函数时都会保留其上次的值。 - 参数:函数定义中声明的变量,用于接收函数调用时传入的参数。
例如:
#include <stdio.h> // 全局变量
int g_x = 10; void func() {
// 局部变量
int y = 20; // 静态局部变量
static int z = 30;
} int add(int x, int y) {
// 参数 x 和 y
return x + y;
} int main() {
// 全局变量
printf("g_x 的值是 %d\n", g_x); func(); // 函数调用,传入两个参数
int sum = add(10, 20);
printf("sum 的值是 %d\n", sum);
return 0;
}
还有一些附加的变量类型:
- 自动变量:定义在函数内部的变量,使用
auto
关键字修饰。自动变量在函数执行结束后自动释放,它是 C 语言中默认的变量类型。 - 注册变量:定义在函数内部的变量,使用
register
关键字修饰。注册变量存储在 CPU 的寄存器中,因此访问速度快,但是数量有限,通常用于循环变量。
例如:
#include <stdio.h> void func() {
// 自动变量
auto int x = 10; // 注册变量
register int y = 20;
} int main() {
func();
return 0;
}
注意,自动变量和注册变量都是局部变量,仅在函数内部有效。
还有一些附加的变量类型:
- 指针变量:存储一个内存地址的变量。指针变量可以用来存储一个变量的内存地址,并通过指针访问这个变量。
例如:
#include <stdio.h> int main() {
int x = 10;
int *p; // 定义指针变量 p
p = &x; // 存储 x 的内存地址
printf("x 的值是 %d\n", x);
printf("x 的内存地址是 %p\n", &x);
printf("p 的值是 %p\n", p);
printf("*p 的值是 %d\n", *p);
return 0;
}
输出结果:
x 的值是 10
x 的内存地址是 0x7fff5d72d97c
p 的值是 0x7fff5d72d97c
*p 的值是 10
C语言输入输出
在 C 语言中,可以使用标准库中的输入输出函数来完成输入输出操作。
例如,使用 printf()
函数进行输出:
#include <stdio.h> int main() {
printf("Hello, World!\n");
return 0;
}
使用 scanf()
函数进行输入:
#include <stdio.h> int main() {
int x;
printf("请输入一个整数:");
scanf("%d", &x);
printf("你输入的数是 %d\n", x);
return 0;
}
注意,在使用 scanf()
函数时,需要传入变量的内存地址,因为 scanf()
函数会直接修改变量的值。
C语言常用知识总结的更多相关文章
- C语言常用知识
跳出for循环主要有以下2中方式: 1.用break语句.如: int i; for(i=0; i<10; i++) { if(i>3) // 如果i>3,跳出for循 ...
- C语言-常用知识和技巧
1. char string[MAXSIZE], *tmp = string; 2."&&", "||", "?:", &q ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- C语言基础知识-运算符与表达式
C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...
- javascript常用知识汇总
javascript这个语言庞大而复杂,我用了三年多了,还是皮毛都不会.从刚开始的jquery,到后来的es6,每天都在学习,每天都在忘记. 1.禁止手机虚拟键盘弹出 在开发适配手机的页面时,出现了这 ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- C语言常用的库文件(头文件、函数库)
C语言常用的库文件(头文件.函数库) C系统提供了丰富的系统文件,称为库文件.C的库文件分为两类,一类是扩展名为".h"的文件,称为头文件,在前面的包含命令中我们已多次使用过.在& ...
- 01-C语言基本知识
目录: 一.C语言基本知识 二.C语言概述 回到顶部 一.C语言基本知识 1 语言背景 1946年,美国冯·诺依曼第一台计算机. 四大部分:中央处理器(控制器,运算器),存储器,输入设备,输出设备. ...
- javascript常用知识点集
javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...
随机推荐
- 极客的浪漫「GitHub 热点速览 v.22.41」
极客的浪漫,是怀旧复古的开源操作系统 SerenityOS 献上的情书:也是实用派用 AI 作画工具 novelai-bot 生成二次元女友.LxgwWenKai 用仿宋 / 楷体中文字体书写而成的那 ...
- do-while循环的使用
一.循环结构的4个要素 ① 初始化条件 ② 循环条件 --->是boolean类型 ③ 循环体 ④ 迭代条件 二.do-while循环结构: ①do{ ③; ④;}while(②); 执行过程: ...
- c++算法竞赛常用板子集合(持续更新)
前言 本文主要包含算法竞赛一些常用的板子,码风可能不是太好,还请见谅. 后续会继续补充没有的板子.当然我太菜了有些可能写不出来T^T 稍微有些分类但不多,原谅我QwQ 建议 Ctrl + F 以快速查 ...
- .NET性能系列文章二:Newtonsoft.Json vs. System.Text.Json
微软终于追上了? 图片来自 Glenn Carstens-Peters Unsplash 欢迎来到.NET性能系列的另一章.这个系列的特点是对.NET世界中许多不同的主题进行研究.基准和比较.正如标题 ...
- vim编译器
光标移动,模式切换,删除,查找,复制,粘贴,撤销 vim的三种模式(重点) vim存在的三种模式 命令模式,编辑模式,尾行模式 命令 模式:不能直接编辑.但是可以用快捷键进行一些操作(删除,复制,移动 ...
- 剑指offer20题表示数值的字符串:这题实在是太优雅了
目录 前言 一.憨憨初解 1.思路 2.代码 3.战绩 4.反思 二.看懂再解 1.思路 2.代码 3.C++版战绩 总结 前言 题目来源:https://leetcode.cn/problems/b ...
- VM虚拟机搭建Linux CentOS7(手把手教程)
VM虚拟机搭建Linux CentOS7(手把手教程) 目录 VM虚拟机搭建Linux CentOS7(手把手教程) 一.VM虚拟机和Linux镜像文件下载 1. 登录VM虚拟机官方地址: 2. 安装 ...
- 使用gitee创建个人的图床
使用gitee创建个人的图床 1.如果还没有gitee(码云)账号,可以注册一个,注册后登陆进入个人中心 2.点击新建仓库 3.进入创建页面 创建成功 5.在本地电脑创建一个文件夹,专门用来放置要上传 ...
- C/C++ 知海拾遗
C语言知识拾遗 2022/11/11 memset()函数用法 包含头文件:<string.h> 作用:给任意类型变量数组初始化,即万能初始化函数. 使用形式:memset( void* ...
- 2022ICPC区域赛参后感悟
第一次参加正式的大类赛事,在某种程度上挺激动的.我呢,可以说是刚步入竞赛一年,在此期间遇见了一些志同道合的朋友,最重要的是遇见了我的队友. 开始前,我幻想过我们小队可以超常发挥,拿取学校中第一个区域赛 ...