数据类型/运算符/表达式

主要分两部分介绍,第一部分介绍常用的数据类型,例如:常量和变量/整型/实型/字符型;第二部分介绍算数运算符和算数表达式以及赋值运算符和逗号运算符。

一. 常用的数据类型

1. C语言中的数据类型

C语言中基本数据类型主要有整型/实型/字符型/字符串型,本节主要介绍这几种基本的数据类型,以及数值型数据之间的混合运算

2. 数据类型保存的范围

C语言中数据类型所占的字节数,与操作系统和编译器都有关,C语言提供了sizeof操作符来查看某个类型变量在计算机内存中占多少字节

这里给出一张速查表方便查询

3.常量/变量和保留字

​ C语言中有常量,变量还有保留字

常量:程序运行中,其值不能被改变的量;eg:150

变量:可以改变的量,介绍变量之前,先了解下表示符,标识符:类似与人的名字,由字母/数字/下划线组成,第一个字符必须是字母或者下划线,变量名就是一个表示符,而且区分大小写

保留字:系统保留起来,有特殊用途,C++中一共由74个保留字,如下图所示

4. 整型/实型/字符型/字符串型

​ 1) 整型数据即整数

//整型变量的定义
int a, b, c;
unsigned int d, e, f;
// 定义变量的时候初始化
int k = 189;
//在一个常数后边加一个字母U,表示该常数用无符号整型方式存储,相当于unsigned int
//在一个常数后边加一个字母L,表示该常数用长整型方式存储,相当于long
//在一个常数后边加一个字母F,表示该常数用浮点数方式存储,相当于float
//小数会被截断
int test2 = 23.12F;  

​ 2) 实型数据

//十进制浮点数表示形式
0.12; 3.1415926;
//指数形式表示的浮点数  浮点数在内存中以指数形式存储 具体如何存储的  用处不大
//168E+2 ====>  16800   168E-2 1.68
float ab = 168E-2;
//实型变量
//float:单精度变量  一般提供7位有效数字(保守估计6位)
//double:双精度变量 一般提供15-16位有效数字(保守估计15) 这个数字根据机器而定

//关于精度问题,有效数字
12345.678;
// 10000.0 只有一位有效数字导致此结果  这就是精度问题
// 12000.0 有两位有效数字导致此结果
// 12300.0 有三位有效数字导致此结果
// 12345.67X 有七位有效数字导致此结果

0.1234;
// 0.1XXX 只有一位有效数字
// 0.12XXXX 只有两位有效数字

//十进制数转换成二进制   然后把二进制在转换成十进制  转换中存在除法  会导致如下精度丢失问题
float af1 = 0.5;       // 0.500000000
float af2 = 0.51;      // 0.509999990

​ 3)字符型数据

//常规字符: 用单引号引起来的一个字符;
'a'; '$', 'b';
//特殊字符:转义字符,以\开头的字符序列, \n换行  常用的转移字符
'\n', '\'', '\\', '\"';
//字符变量:只能保存一个字符,因为一个字符型变量在内存中只存在一个字符
//实际上是把字符对应的ASCII码放到了变量所代表的变量的内存中
char x1, x2;
x1 = 97; //x1 = 'a'
x2 = 98; //x2 = 'b'
printf("c1 = %c, c2 = %c\n", x1, x2); //%c以字符的形式输出
x2 = x2 + 4;  // 102 f
printf("c1 = %c, c2 = %c\n", x1, x2); //%c以字符的形式输出

说到字符不得不说一下转义字符,在这里列出ASCII码表

4) 字符串型

//字符串常量:用一对双引号引起来的一堆字符,可以是一个字符,也可以是多个字符  "hello world"
//字符串变量
//不要混淆‘a’,"a"; 单引号引起来的是字符  双引号引起来的是字符串
//单引号a 和 双引号a的区别   'a': a   "a": a '\0'
//\0表示字符串结束标记,但是在printf的时候 \0并不输出出来
printf("abcdef\0aaaaaaaaaa\n");   //abcdef
printf("\n");
printf("qqabcdef\0123565\n");   //    \0后面跟数字  被当作八进制数
printf("abcdefgh\n"); // 自动在末尾\0

5) 变量赋初值

int qq = 3;
int q, w, ee = 6; //只给ee赋初值,对于没赋值的变量,其值是不确定的,不能随意拿过来用
//变量必须先定义后使用

5.数值型数据之间的混合运算

原则:

//数值型数据之间的混合运算
int ax = 500;
double ada = 15.67;
double def = ax + ada; //系统把Int转换成double,然后和原来的double相加
    

二. 算数运算符和表达式

1. C语言中的运算符

1)C语言中一共13中运算符

2) C语言中运算符的优先级问题

2.算数运算符和算数表达式

​ 1)算数运算符就是平时所说的加减乘除求余等运算,算数表达式是由算数运算符组成的表达式

////(1)算数运算符和算数表达式
//// + - * / %(取余也叫模运算符,该运算符两侧都要求为整数)
//printf("表达式的结果%d\n", 5/3); //两个整数相除,系统会舍弃小数部分
//printf("表达式的结果%d\n", 5%3);

​ 2)算数运算符的优先级

//运算符优先级问题:先乘除,后加减,如果优先级相同,则先计算左边,再计算右边,(从左到右结合)
//2 + 3 * 5;
//printf("2+3*5 = %d\n", 2 + 3 * 5);

////赋值运算符
//int i;
//i = 4; //把等号右边的变量赋值给左边的变量
//i = 4 + 3; // ==> i = (4+3) 括号的优先级最高 如果搞不懂优先级,那么就用括号运算符把需要优先运算的内容括起来
//
////int a;
////a += a += a /= a + 6;//

3.强制类型转换运算符

类型转换分为两种,

​ 1)自动类型转换:系统替程序员转换

​ 2)强制类型转换:自动类型转换达不到目的时,就用强制类型转换

强制类型转换运算符,将一个表达式转换为所需要的类型   ((类型)) 优先级挺高的
////强制类型转换得到的是中间变量
////有些书籍不建议写成int(a),实际如果写成int(a)也是可以的
//int a;
//double b;
//b = (double)a; //这属于强制类型转换 但是a本身的类型并没有变化  而是结果发生了变化

////(int)(a+b)  将a+b的值转换为整型;
////总结强制类型转换运算符的一般形式 (类型名)(表达式)
//// (int)x + y; // 只讲x转换成了整型,然后和y相加了
float x;
int i;
x = 3.6f;
i = (int)x; //3
printf("x = %f, i = %d\n", x, i);

4.自增自减运算符

​ 自增和自减操作符 ++ -- 经常用

​ 只能用于变量,不能用于常量表达式,比如错误的用法:++5

​ 当自增或者自减运算符在变量后边的时候,对于该自增或者自减表达式的使用是,先用后加

i = 6;
//相当于i自身加1,然后结果值在赋值给i
//++i; // 先加后用
//i++; //  先用后加
//如果++i或i++单独写成一个语句,没有任何区别,都是将变量自身+1,没有区别,但是如果放在函数调用中,结果就会不同
printf("i++的结果是%d %d\n",i++,i); // 先用后加,i++结果为6 i本身为7
printf("++i的结果是%d %d\n",++i,i); // 先用后加,i++结果为8 i本身为8
//表达式: 理解为+-*/串起来的一个式子
//-i++ ==> -(i++)
//i+++j; // ==> (i++)+j;c编译器在处理时会尽可能多的从左到右将若干个字符组成一个运算符 

5.赋值运算符和赋值表达式

    //1 赋值运算符
    //赋值运算符和赋值表达式  = 将等号右边的值赋给等号左边的变量
    // = 左边 是个变量 所谓这个赋值, 可以理解位给变量一个值,或者是改变变量到某一个值
    int a;
    a = 5;
    a = 6.5; //将实型数据赋给整型变量时,小数部分会被设置 a = 6;
    a = 18 + 50;
    a = a + 3; //73

    float f;
    f = 125; // 1.25E2 实型变量按指数形式保存在内存中的
    // 几个概念
    //char a; //变量定义  系统给a分配一个字节的内存,内存里的之不确定
    char b = 90;//变量定义同时赋初值,也叫定义时初始化  -128-=127
    b = 900;//赋值语句  会溢出  溢出后a里面的内容,就变得不可预料了
    //赋值的原则,尽量保证类型相同,类型不同的用强制类型转换,当用强制类型转换时,必须明确知道不会溢出
    int c;
    c = (int)23.5;

    int d;
    d = 1000000 * 1000000; //溢出

    //2. 复合的赋值运算符:在赋值运算符之前加上其它运算符,构成了复合的赋值运算符(复合的赋值运算符之间必须紧挨着不能用空格分开)
    int e= 8;
    e += 3; // e = e + 3;

    int x = 2, y = 8;
    x *= y + 8; // x = x * (y+8);如果*=右侧是个表达式的话,则相当于表达式有括号
    x %= 3; // x = x % 3;

    //3. 赋值表达式 本身也是有值的 赋值运算符从右到左运行
    int z = 4;
    printf("z = 5这个赋值表达式的值是%d\n", z = 5);
    printf("z += 8这个赋值表达式的值是%d\n", z = 5);

    int aaa,bbb;
    aaa = (bbb= 5); // aaa = 5; bbb = 5;

    int ccc = 23;
    aaa = bbb = ccc ;

    aaa = 3;
    aaa += a -= a*a;// a+= (a -= (a*a)) -12

6.逗号运算符和逗号表达式


    //4. 逗号运算符和逗号表达式
    int a;
    a = (4,5);//5
    a = (3+5,6+8);//14
    a  = 3*5,a*4; // a = 15 表达式为60
    result = (a  = 3*5,a*4); //result 60 a=15
    //逗号表达式的扩展形式:
    //表达式1,表达式2,表达式3,……,表达式N,最终的值是表达式N的值

    int x,a;
    x = (a = 3,6 * 3);// a = 3, x = 18
    x = a = 3, 6 * a;//a = x = 3; 表达式结果为18

C语言复习————基本数据类型、运算符和表达式的更多相关文章

  1. c语言的类型、运算符与表达式

    title: 2017-10-17c语言的类型.运算符与表达式 tags: c程序设计语言 grammar_cjkRuby: true --- 1.1 数据类型 char 字符型,一个字节 int 整 ...

  2. C语言:类型、运算符、表达式

    看了一天书,有点累了.就写写随笔记录一下今天的复习成果吧. C语言的基本数据类型 数值型:整型数,浮点数,布尔数,复数和虚数. 非数值型:字符. 整数最基本的是int,由此引出许多变式诸如有符号整数s ...

  3. JS基础-数据类型-运算符和表达式-变量和常量

    1.js的基础语法2.js调试 1.F12调出控制台,查看提示错误及其位置. 2.出错时只影响当前代码块,不会影响其他代码块,后续代码块继续执行.3.语法规范 1.js语句:可执行的最小单元 必须以 ...

  4. C语言学习笔记二---数据类型运算符与表达式

    一.C的基本语法单位 1.标识符:有效长度:31(DOS环境下) 2.关键字:main不是 3.分隔符:空格符,制表符,换行符,换页符 4.注释符:a./*.....*/   b.// 二.C的常用输 ...

  5. Java 语言基础 (初识Java语言, 变量和数据类型, 运算符, 流程控制语句, 数组)

    初始 Java 语言 Java SE -- Java Platform, Standard Edition 是 Java 平台的基础 Java SE 以前称为 J2SE, 可以编写桌面应用和基于 we ...

  6. C语言---程序的一般形式、数据类型、常量变量、运算符、表达式、格式化输入输出

    1. 程序的一般形式 (1)注释 ① 分类:单行注释( // ): 注释一行.多行注释( /**/ ): 在这个区间内,都属于多行注释,可以换行. ② 作用:提示代码的作用,提示思路   不写注释的后 ...

  7. 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等

    [源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native  ...

  8. 01-Java基础知识:数据类型与变量、标识符、运算符、表达式

    Java基础知识:数据类型与变量.标识符.运算符.表达式 一.数据类型 Java定义了基本数据类型.引用数据类型.自定义类型. 八种基本数据类型:byte (1). short (2).  int ( ...

  9. C语言入门(5)——运算符与表达式

    C语言中运算符和表达式数量之多,在高级语言中是少见的.正是丰富的运算符和表达式使C语言功能十分完善.这也是C语言的主要特点之一. C语言的表达式由运算符.常量及变量构成.C语言表达式基本遵循一般代数规 ...

随机推荐

  1. hdu-6579 Operation

    题目链接 Operation Problem Description There is an integer sequence a of length n and there are two kind ...

  2. 2019 Multi-University Training Contest 7

    2019 Multi-University Training Contest 7 A. A + B = C 题意 给出 \(a,b,c\) 解方程 \(a10^x+b10^y=c10^z\). tri ...

  3. POJ-2387 Til the Cows Come Home ( 最短路 )

    题目链接: http://poj.org/problem?id=2387 Description Bessie is out in the field and wants to get back to ...

  4. codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)

    题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...

  5. CF1072A Palindromic Twist 思维

    Palindromic Twist time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  6. hdu 3974 Assign the task(线段树)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3974 题意:给定一棵树,50000个节点,50000个操作,C x表示查询x节点的值,T x y表示更 ...

  7. 基础知识:Mysql基本操作命令

    启动mysql :  mysql -hlocalhost -uroot -p 创建数据库:create database 数据库名字; 指定要操作的数据库:use 数据库名字; 查看数据表建表语句:s ...

  8. FreeSql (十一)更新数据 Where

    var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...

  9. abp(net core)+easyui+efcore实现仓储管理系统——EasyUI前端页面框架 (十八)

    目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) ab ...

  10. 【第十四篇】easyui datagrid导出excel

    <a class="btn btn-app" onclick="exportExcel()"><i class="fa fa-edi ...