第二章 C数据类型

八进制整数由数字0开头,后跟0~7的数字序列组成。

十六进制整数由数字0加字母x(或X)开头,后跟0~9,a~f(或A~F)的数字序列组成。

整型常量:

  • 默认的int型定义为有符号整数,因此对int型无需使用signed
  • 无符号整型常量:U
  • 长整型常量:L
  • 无符号长整型常量:LU

十进制小数形式

指数形式:3.45e-6=0.00000345

实型常量:

  • 单精度:F
  • 双精度(实型常量默认)
  • 长双精度:L

变量在使用前必须先定义,需要声明变量的类型和变量名。

//L2-1a-1

main()//以main()作为开头指定了C程序执行的起点
//一个C程序必须有且只能有一个用main()作为名称的函数,称为主函数
{
int a;
float b;
char c;
a = 1;
b = 2.5;
c = 'A';
}
  • 变量名(标识符)是大小写敏感的
  • 所有变量必须在第一条可执行语句之前定义(这是C89的要求)
  • C99的新特性允许语句和声明按任意顺序排列,只要每个标识符都遵循先声明后使用的原则就行
  • 空格是为了增强程序的可读性
  • 定义变量的同时可以对变量进行初始化,如int a=1;

//L2-1a-2

main()
{
int a = 1; /* 定义整型变量a并对其初始化 */
float b = 2.5; /* 定义实型变量b并对其初始化 */
char c = 'A'; /* 定义字符型变量c并对其初始化 */
}

可同时定义多个相同的变量,如int a,b,c;

注释不可以嵌套!

//L2-1b

#include  <stdio.h>//这是C的编译预处理命令
//这一行将会出现在每一个需要向屏幕输出数据或者从键盘输入数据的程序中
main()
{
int a = 1;
float b = 2.5;
char c = 'A';
//\n表示输出一个换行
printf("a = %d\n", a); /* 按整型格式输出变量a的值 */
printf("b = %f\n", b); /* 按实型格式输出变量b的值,除非特别指定,否则隐含输出6位小数 */
printf("c = %c\n", c); /* 按字符型格式输出变量c的值 */
printf("End of program\n"); /* 输出一行字符串 */
}
//运行结果
a=1
b=2.500000
c=A
End of program

变量或数据类型所占空间的大小:

  • 1B(字节)=8bit
  • sizeof()是C语言的关键字,不是函数名
  • sizeof()是C语言提供的专门用于计算指定数据类型字节数的运算符

//L2-2

#include  <stdio.h>
main()
{
printf("Data type Number of bytes\n");
printf("------------ ---------------------\n");
printf("char %d\n", sizeof(char));
printf("int %d\n", sizeof(int));
printf("short int %d\n", sizeof(short));
printf("long int %d\n", sizeof(long));
printf("float %d\n", sizeof(float));
printf("double %d\n", sizeof(double));
}
//运行结果
Data type Number of bytes
------------ ---------------------
char 1
int 4
short int 2
long int 4
float 4
double 8

赋值表达式用于给变量赋值

  • 有方向性
  • 等号左侧是能表示一个特定存储单元的变量名

运算的优先级

  • 综合性:左结合、右结合
  • C语言中需要两个操作数的算数运算符是左结合的
  • 赋值运算符是右结合的

有符号整数和无符号整数

  • 对有相同字数的整型数而言,有符号整数能表示的最大整数的绝对值只有无符号整数的一半
  • 负数在计算机中都是以二进制补码的形式来表示和存储的
  • 正数的反码、补码与其原码都是相同的
  • 采用补码可以将减法运算也转换为加法运算来处理
  • 采用补码可以以统一的形式来表示+0和-0

实数的指数部分称为阶码,小数部分称为尾数

  • 阶码所占的位数决定实数的表数范围,尾数所占的位数决定实数的精度
  • 尾数的符号决定实数的正负

浮点数并非真正意义上的实数,只是其在某种范围内的近似

//L2-3

#include <stdio.h>
main()
{
float a;
double b;
a = 123456.789e4;
b = 123456.789e4;
printf("%f\n%f\n",a,b);
}
//运行结果
1234567936.000000
1234567890.000000

C语言程序设计(二) C数据类型的更多相关文章

  1. OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)

    OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章) 4.5精度和精度修饰符 4.5.1范围和精度 用于存储和展示浮点数.整数变量的范围和精度依赖于数值的源(varying,unifo ...

  2. Python语言程序设计之二--用turtle库画围棋棋盘和正、余弦函数图形

    这篇笔记依然是在做<Python语言程序设计>第5章循环的习题.其中有两类问题需要记录下来. 第一是如何画围棋棋盘.围棋棋盘共有19纵19横.其中,位于(0,0)的星位叫天元,其余8个星位 ...

  3. C语言程序设计第二次作业--顺序结构

    C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...

  4. 全国计算机等级考试二级Python语言程序设计考试大纲

    全国计算机等级考试二级Python语言程序设计考试大纲(2018年版) 基本要求 掌握Python语言的基本语法规则. 掌握不少于2个基本的Python标准库. 掌握不少于2个Python第三方库,掌 ...

  5. C语言程序设计II—第二周教学

    第二周教学总结(4/3-10/3) 教学内容 根据邹欣老师的建议,临时修改教学计划,将最后一周的内容:第十二章 文件,提前讲授. 课前准备 在博客园发布作业:2019春第二周作业 作业根据本周讲授的& ...

  6. 《C语言程序设计》课程教学目录

    <C语言程序设计>课程教学目录 不要去精确定义单个论题,应将一整套问题组织成体系.--黎曼(1826-1866)德国著名数学家 教学过程 2018年秋季学期 C语言程序设计I-第一周教学 ...

  7. 2019年春季学期《C语言程序设计II》课程总结

    2019年春季学期<C语言程序设计II>课程总结 1.课程情况 教学内容 课堂小结 作业安排 优秀作业 备注 1.开学谈心 2.测验数据类型.运算符与表达式的自学情况,并讲解测验题目3.第 ...

  8. 《C语言程序设计教程》学习笔记

    <C语言程序设计教程>--朱鸣华.刘旭麟等 第一章 C语言概述 1.C语言的特点: 1)兼具高级.低级语言的双重能力(C语言允许直接访问物理地址,能够进行位操作,能实现汇编语言的大部分功能 ...

  9. 【MOOC课程学习记录】程序设计与算法(一)C语言程序设计

    课程结课了,把做的习题都记录一下,告诉自己多少学了点东西,也能给自己一点鼓励. ps:题目都在cxsjsxmooc.openjudge.cn上能看到,参考答案在差不多结课的时候也会在mooc上放出来. ...

  10. C语言程序设计实验报告(第一次实验)

    C程序设计实验报告 实验项目:C语言程序设计教程实验1.3.2:1.3.3:1.3.4:2.3.1:2.3.2 姓名:赖瑾 实验地点:家 实验时间:2020.2.25 目录 C程序设计实验报告 一.实 ...

随机推荐

  1. Pytorch中的variable, tensor与numpy相互转化的方法

    1.将numpy矩阵转换为Tensor张量 sub_ts = torch.from_numpy(sub_img) #sub_img为numpy类型 2.将Tensor张量转化为numpy矩阵 sub_ ...

  2. REMODE解析

    版权声明:本文为博主原创文章,未经博主允许不得转载. 纯视觉的三维重建(不考虑用结构光的那一类)常用的有两大类方法:一类是SfM,缺点是计算量比较大,做不到实时运行:另一类是KinectFusion为 ...

  3. 细看Java序列化机制

    概况 在程序中为了能直接以 Java 对象的形式进行保存,然后再重新得到该 Java 对象,这就需要序列化能力.序列化其实可以看成是一种机制,按照一定的格式将 Java 对象的某状态转成介质可接受的形 ...

  4. Java IO: ByteArray和Filter

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中字节数组与过滤器的输入输出流,主要涉及以下4个类型的流:ByteArr ...

  5. 使用 ActiveMQ 示例

    « Lighttpd(fastcgi) + web.py + MySQLdb 无法正常运行关于 Jms Topic 持久订阅 » 使用 ActiveMQ 示例 企业中各项目中相互协作的时候可能用得到消 ...

  6. 树的DFS

    Depth-first search (DFS) is an algorithm for traversing or searching tree or graph data structures. ...

  7. IOS下的safari下localStorage不起作用的问题

    我们的一个小应用,使用百度地图API获取到用户的坐标之后用localStorage做了下缓存,测试上线之后有运营同学反馈页面数据拉取不到, 测试的时候没有发现问题,而且2台相同的iphone一台可以一 ...

  8. 「CometOJ」Contest #11

    Link Aeon 显然字典序最大就是把最小的字母放在最后 Business [动态规划] 简单dp dp[i][j]dp[i][j]dp[i][j]表示到第iii天,当前有jjj块钱,最后返还的钱最 ...

  9. classnames

    在React中编写模板时给标签添加class. 如果是固定的className="XX"就可以了. 如果要根据状态值动态应用或去除, 或使用多个class时就麻烦了. 可以使用cl ...

  10. CentOS7用yum安装wget命令后仍然提示命令找不到的解决方法

    需求:用的AWS实例自带的CentOS7用yum安装wget命令后扔提示命令找不到,后面用源码安装方式解决,下面先讲解决方法,疑问及知识点扩展最后写出 1.问题(因是mini版本系统,有些基本命令扔需 ...