第二章 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. Java IO: 序列化与ObjectInputStream、ObjectOutputStream

    作者:Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的序列化以及涉及到的流,主要包括ObjectInputStream和O ...

  2. [洛谷P4720] [模板] 扩展卢卡斯

    题目传送门 求组合数的时候,如果模数p是质数,可以用卢卡斯定理解决. 但是卢卡斯定理仅仅适用于p是质数的情况. 当p不是质数的时候,我们就需要用扩展卢卡斯求解. 实际上,扩展卢卡斯=快速幂+快速乘+e ...

  3. Nginx笔记总结十一:Nginx重写规则指南

    依赖PCRE库,需要安装pcre,最多循环10次,超过后返回500错误, 1.       rewrite模块指令 break:完成当前设置的重写规则,停止执行其他的重写规则 if:  if () { ...

  4. Hello 2015

    "Yeah It's on. " 前言 Hux 的 Blog 就这么开通了. 跳过废话,直接看技术实现 2015 年,Hux 总算有个地方可以好好写点东西了. 作为一个程序员, B ...

  5. spring参数拼装

    -- 知道轮子是怎么造的 -- 自己试着造一造轮子 ,这样才可以更好地利用轮子,轮子的缺陷和优点才能明确. spring参数拼装,需要用到set函数,参考文档: http://coderec.cn/2 ...

  6. MyBatis学习总结之一对多映射

    1.首先创建2张表:students 和grades create table grades( gid ) primary key, gname varchar() ); create table s ...

  7. git创建/合并分支/删除分支/将修改后的内容同步到GitHub远程仓库

    1.创建分支并切换到刚创建的分支(这里创建新的分支来修改README.md的内容然后将创建的分支与master分支合并,最后删除创建的分支) $ git checkout -b 分支名 Switche ...

  8. 后端开发中,可以在Cache-Control设置的常用指令

    max-age 该指令指定从当前请求开始,允许获取的响应被重用的最长时间(单位为秒.例如:Cache-Control:max-age=60表示响应可以再缓存和重用 60 秒.需要注意的是,在max-a ...

  9. stat()函数--------------获取文件信息

    stat():用于获取文件的状态信息,使用时需要包含<sys/stat.h>头文件. 函数原型:int stat(const char *path, struct stat *buf): ...

  10. JavaScript 設計模型 - Iterator

    Iterator Pattern是一個很重要也很簡單的Pattern:迭代器!我們可以提供一個統一入口的迭代器,Client只需要知道有哪些方法,或是有哪些Concrete Iterator,並不需要 ...