C语言基础:数据类型(一)

2023-10-29

C语言基础:数据类型(一)

C语言是计算机中很多现代编程语言的开山鼻祖,它创造了信息时代和科技时代的文明。计算机语言由机器语言慢慢演变为高级语言。1958年7月3日,ALGOL语言(Algorithmic Language)创立。C语言的原型就是ALGOL 60语言。C语言的演变过程:ALGOL 60语言(简称A语言)–>CPL语言–>BCPL语言(简称B语言)–>C语言
计算机语言发展



1. 第一个c语言程序

程序=数据结构+算法

#include "stdafx.h"//是预编译处理器把stdafx.h文件中的内容加载到程序中来。
#include <stdio.h>//在预处理时将stdio.h文件包含进当前文件,比如printf()函数的声明就在stdio.h文件中。

int main(int argc, char* argv[])/* argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数是用户从命令行输入的参数 */
{
	printf("Hello World!\n");//输入函数,行末跨行。
	printf("\n");//占一行,跨行。
	return 0;//return 0表示程序正确退出,非0就是程序异常退出。
}

2. ASCII码

ASCII码分为:

  1. 52个字母(大小写)
  2. 10个数字
  3. 可见字符(+,-,=,<,*等)
  4. 控制字符
    ASCII码对照表

3. 数据类型

  1. 整型intshortlongunsigned intunsigned shortunsigned longint输出用%dlong输出用%ld%-5d表示向左对齐,共占5位;
  2. 字符型char,占1个字节,输出用%c表示;
  3. 实型float,占4个字节,单精度,输出用%f表示,%8.2f表示为共占8位数,小数点后保留2位数;
    double,占8个字节,双精度,输出用%lf表示;
    long double,占16个字节,长双精度实型。
    整型变量存放
    注:在16位计算机中,整型占2个字节,但在32位计算机中整型int则要占4个字节,在64位计算机中整型int仍然也占4个字节。

4. 常量和变量

  1. 常量:程序运行过程中,值不会改变的量。分为字面常量和符号常量。
  2. 变量:在程序运行的过程中,其值可以改变的量。每个变量应该有一个名字,对应一定大小的内存空间,必须先定义(起名字)后使用。
    注:变量的名字必须满足C语言关于标识符的命名规则。

4.1 标识符的命名规则

  1. 由字母,数字和下划线组成,开头不能是数字;
  2. 不能与保留字同名(保留字是在C语言里面有特殊意义的单词,如int);
  3. 起名时注意字母大小写。

4.2 字面常量

4.2.1 整型
  1. 十进制,直接写出:123
  2. 八进制,以0开头:0123
  3. 十六进制,以0x开头:0x123
    注: 进制后面可加上’l’表示长整型。进制可以互相转换,其他进制转十进制用进制展开多项式,十进制转其他进制用除基取余法,详细就见进制转换规则。
4.2.2 实型
  1. 十进制小数形式:123.45
  2. 指数形式:1.23e2,从科学计数法可表示为1.23乘以10的2次方,e之前必须有数字,e之后必须是整数;
  3. 规格化的指数形式:e之前的数据,小数点之前有且仅有一位非0数据。
    注:实型数据是不精确的。
4.2.3 字符型

用单引号括起来的一个字符(ASCII字符):

  1. 只能一个字符;
  2. 单引号不能中文状态;
  3. 转义符'\',转义后面的字符,一般用来转义控制字符,如'\n',跨行;'\\',转义斜杆'\''\''转义单引号''''\141',斜杆后跟3位数,这里表示为八进制的141,八进制141换算为十进制97,十六进制61,也等于'a''\x61'的值。
    注:八进制的斜杆后面不能超过3位数,十六进制的斜杆后面不能超过2位数,斜杆后面不跟十进制。
4.2.4 字符串常量

用双引号括起来的一串字符(ASCII字符):

  1. 每个字符串都有一个隐含的结束标记'\0'
  2. 单引号的a只有一个字符,双引号的a严格的来说有2个字符a和'\0'

试题训练:请问"xyz\ \ \t\1818\xabc"中有几个字符? 11个

4.3 符号常量

符号常量是在C语言中,可以用一个标识符来表示一个常量,这个标识符称之为符号常量。其特点是编译后写在代码区,不可寻址,不可更改,属于指令的一部分。

5. 运算符

单目,双目,三目运算:一个目代表一个运算对象(数字)。

5.1 单目运算符

(类型)表达式:强制运算符,优先级2,强制转换表达式为这类类型;
自增自减运算符++,--,优先级2,但运算先后不取决于优先级。

#include "stdafx.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
	int x;
	float y=2.5;
	x=(int)y;
	printf("%d,%f\n",x,y);//强制运算符的应用
	int m,n;
	int z=3;
	int	l=3;
	m=z++*2;
	printf("%d,%d\n",z,m);//z++,先运算后自增
	n=++l*2;
	printf("%d,%d\n",l,n);//++l,先自增再运算
	return 0;
}

运行结果:

2,2.50000
4,6
4,8

注:所有单目运算符优先级都是2,结合性自右向左;C语言中强制类型转换不会改变原变量的原有数据类型。

5.2 双目运算符

*,/,%: 优先级3,结合性自左向右;
+,-:优先级4,结合性自左向右,优先级越高,就先进行运算;
=:赋值运算符,优先级14,结合性自右向左,把右边的值计算出来,然后赋值给左边;
+=,-=,/=,%=:复合赋值运算符,优先级14,结合性自右向左;
,:逗号运算符,优先级15,结合性自左向右,分隔符,相当于几个表达式的合并。

#include "stdafx.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
	int a,b,c;
	a=b=c=3;
	a+=a*=a;//9+9
	b+=b*b;//9+3
	c+=c-=c/=c*=c;//0+0
	printf("%d,%d,%d\n",a,b,c);
	return 0;
}

运行结果:

18,12,0
#include "stdafx.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
	int a=1,b,c;
	a++,b=a++,c=++b;//a++->a=2,b=a++->b=2+1,c=++b->c=2+1=3
	printf("%d,%d,%d\n",a,b,c);
	return 0;
}

运行结果:

3,3,3

例1. 10%3=1,-10%3=-1,-10%(-3)=-1,3%10=3,小数模大数,余就是小数(自己),模的符号取决于被除数的符号。

例2. x=(a,a+b),逗号表达式的值=逗号右边的表达式的值,x=a+b

注:如果运算符两边都是整型,那结果也是整型,如果两边有一边是带小数点,结果也是带小数点;C语言中不是所有的逗号都是逗号运算符,如int a,b;

5.3 三目运算符

三目运算符,又称条件运算符,优先级13,结合性是自右向左。
格式:表达式1?表达式2:表达式3

#include "stdafx.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
	int a = 2;
	int c = 3;
	int b = (a > c) ? a : c;
	printf("%d\n",b);
	return 0;
}

运行结果:

3

注:它是唯一有3个操作数的运算符,有时又称为三元运算符。


——>楼主初次来到博客,这是我的第一篇博文,以上内容是关于C语言的基础知识,希望对初学者或再次学习者有所帮助,基础打扎实,不怕风吹雨打! 如果以上内容有错误或者内容不全,望大家提出!我也会继续写好每一篇博文!

待续未完
——文优

欢迎观看和提问!!!

下一篇:C语言基础:程序结构(二)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言基础:数据类型(一) 的相关文章

  • 【云原生之Docker实战】使用Docker部署Wizard文档管理系统

    云原生之Docker实战 使用Docker部署Wizard文档管理系统 一 Wizard介绍 1 Wizard简介 2 Wizard特点 二 检查宿主机系统版本 三 检查本地docker环境 1 检查docker服务状态 2 检查docke
  • 你看鱿鱼这么便宜,所以是不是很可怜?

    本文非技术分享 可能属于逻辑思考 再一次做梦 如下片段 有个朋友聊天问我 你看鱿鱼 那么便宜 是不是很可怜 我的内心 贵或者不贵 从哪能体现出它可怜不可怜呢 这逻辑有问题 我的回答 有点 又一次从梦中醒来 立马记录下做了什么梦 仅此而已 好
  • Android8.0、9.0安装包解析失败

    根据google官网得知 在8 0以上权限控制的更加严格 应用内安装下载更新的apk都需要申请 安装外面应用 权限才能去安装新应用 如果没有申请否则无法安装 顺便附上6 0 7 0设备解决方案 一 设备6 0

随机推荐

  • MDK 5.10 -- Reading one or more Pack descriptions failed

    MDK 5 10 的Pack Install 提示如下错误 解决办法 1 去掉 C Keil v5 ARM Pack Keil STM32L0xx DFP 1 5 0 Keil STM32L0xx DFP pdsc 文件的只读属性 2 用M
  • canvas生成自定义大小图片

    场景 比如移动端签名 一张canvas画布 在任意位置书写之后 生成一张图片 如果这种图片要放到某一个签名的位置会显的特别大 我们来解决这个问题 一 生成canvas图片 通过 canvas toDataURL image png 1 生成
  • Three.js文件及其插件链接

    Three js master包下载 由于官网three js master文件下载非常缓慢甚至经常下载失败 为了广大WebGL程序员的方便 博主专门下载下来放在百度网盘中分享给大家 百度网盘链接 链接 百度网盘 请输入提取码 提取码 0j
  • SQL批量删除数据操作

    SQL批量删除数据操作 文章目录 SQL批量删除数据操作 sql语句 DELETE和TRUNCATE区别 sql语句 删除数据 避免这么写 删除表全部数据 DELETE FROM student 删除指定数据 DELETE FROM stu
  • IOS 解决安装POD报You don't have write permissions for the /usr/bin directory的错误

    这段时间开始做IOS开发 使用pod管理第三方库 由于一些第三方不兼容最新的pod 所以要安装旧版本的pod 其中遇到的问题就是 You don t have write permissions for the usr bin direct
  • 学前steam教育范围

    近几年什么教育趋势席卷全球 发展势头如火如荼 相信很多人立刻会想到STEAM教育 该教育最早由美国提出 一直备受瞩目 STEAM教育的核心理念是强调学科之间的联系 以整合的形式进行教育 格物斯坦表示学前教育阶段的孩子学习STEAM教育对今后
  • Spring application context not configured for this file

    出现这个意思是新建的Spring配置文件没有被加入到spring里面 我是这样理解的 简单几步搞定 选择编辑器左上角file gt Project Structure 然后 最后别忘Apply OK
  • 构建实时数据可视化监控的全栈实现(Kafka+Spark+TimescaleDB+Flask+Node.js)

    因为项目需求 需要构建一个实时的数据监控系统 把平台上报的业务数据以1分钟的粒度进行呈现 为此我构建了以下的一个架构来实现 平台上报的业务数据会实时的发送消息给Kafka 例如平台每次为车辆进行OTA升级时 会发送一个OTA业务请求的事件
  • 寻找 有向图/无向图 所有环路的DFS暴力求解法(ps:C++代码,复杂度爆炸警告,生产环境慎用)

    思路 1 DFS算法可以求解图中从一点到另一点的全部路径 2 通过枚举所有顶点的邻接点 然后通过DFS寻找枚举点到的所有路径来寻找环路 3 思路很简单 但是算法复杂度确实是太高了 下面上代码 include
  • Java与MySQL时区

    一 CST 时区混乱 CST是一个混乱的时区 它有四种含义 美国标准时间 Central Standard Time USA UTC 06 00 或UTC 05 00 夏令时 3月11日至11月7日 使用 UTC 05 00 冬令时 11月
  • Invalid keystore format 报错解决

    修改JDK location的参数 我这里是android studio安装的时候有jre 自己配置开发环境的时候 也安装了jdk 切换到 android studio的jre 就可以了
  • 2012服务器系统有什么版本的,Win server 2012 哪个版本更合适

    原标题 Win server 2012 哪个版本更合适 Win server 2012 是服务器操作系统 很多客户咨询中很轻易的就将其和SQL数据库系统混淆 为此 小编总结了一些win server 2012 的相关信息 供各位参考 Win
  • ceph pg和pgp的区别

    一 前言 首先来一段英文关于PG和PGP区别的解释 PG Placement Group PGP Placement Group for Placement purpose pg num number of placement groups
  • Matlab中条件语句if详解

    以前在脚本中程序是按照顺序来执行的 限制性第一行 再执行第二行 但有时想要根据不同的情况执行不同的语句这就要用到判断语句if了 if语句的表达形式相当于 如果 那么 表达形式为 if condition condition就相当于执行一个动
  • 进程的虚拟内存,物理内存,共享内存

    想必在Linux上写过程序的同学都有分析进程占用多少内存的经历 或者被问到这样的问题 你的程序在运行时占用了多少内存 物理内存 通常我们可以通过top命令查看进程占用了多少内存 这里我们可以看到VIRT RES和SHR三个重要的指标 他们分
  • 将逐帧图片生成mp4格式视频——pyhton实现

    import cv2 img cv2 imread media lc LENOVO USB HDD MOT SimpleTrack SimpleTrack res img s0 png imgInfo img shape size imgI
  • 四十三.EMS项目Python实现

    显示系统的欢迎信息 print 20 欢迎使用员工管理系统 20 创建一个列表 用来保存员工信息 emps 孙悟空 t18 t男 t花果山 猪八戒 t28 t男 t高老庄 创建一个死循环 while True print 请选择要做的操作
  • 创建路由React router(使用react-router dom V6版本)

    React路由 隔了很长一段时间 重新捡起来React学习 发现React的路由从原来的 Switch改成了Routes nice nice nice 刚开始接触确实还是有一点生疏的 之前的关于 传参 js跳转 跳转模式 路由匹配 哪些还是
  • Matlab转c后 emxArray_real_T结构体说明

    struct emxArray real T double data 具体数据 row major顺序存储 int size 当前数据尺寸 行数 列数 int allocatedSize 当前分配的空间 int numDimensions
  • C语言基础:数据类型(一)

    C语言基础 数据类型 一 C语言是计算机中很多现代编程语言的开山鼻祖 它创造了信息时代和科技时代的文明 计算机语言由机器语言慢慢演变为高级语言 1958年7月3日 ALGOL语言 Algorithmic Language 创立 C语言的原型