C语言第二章总结

第二章2.2
数据类型 运算符 表达式的介绍
VC的使用方法
运算符 sizeof()也是个运算符
本节:

  1. 实型数据
  2. 字符型数据
  3. 字符串数据
  4. 变量赋值
  5. 数据型数据之间混合运算

实型数据

简单来说是浮点型数据
0.12
3.1415926
数据值之间的混合运算:
低精度 -----> 高精度
char,short - >int ->unsigned ->long ->double <-float

运算符

//
//  main.c
//  project1
//
//  Created by sihan guo on 2019/06/13.
//  Copyright © 2019 sihan guo. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    //sizeof() +-
    //十进制浮点型表示形式
    0.12;
    3.1415926;
    
    //指数形式表示
    //128e2 ==> 168*10^2 = 168*10 = 16800;
    //168E+2
    //168E-2 ==> 168*10^(-2) = 1.68
    
    float abc = 168E-2;
    printf("abc = %f\n",abc);
    
    //实型变量
    //float 单精度变量,一般提供七位有效数字(保守估计6位)
    //double 双精度变量(15到16位有效数字)根据不同机器而异
    
    float d,e,f;
    double i,k;
    //浮点型在内存中都是以指数形式储存的
    
    123456.678;  //10000.0 --只有一位有效数字导致此结果的发生
                 //12000.0 --有两位有效数字
                 //12300.0 --有三位有效数字  --以上是精度问题
                 //12345.67X  --这是有七位有效数字导致此结果
    0.1234;      //0.1XXXX --只有一位有效数字
                 //0.12XXXX  --有两位有效数字导致此结果
    
    //演示浮点数
    //float af;
    //double bf;
    //af = 1111.111;  //float 7/8位 只能显示前7位 后面只能随便显示
    //bf = 1111111.111;  //double 16位 保存有效位数更多
    //bf = 1234567898.1234;
    
    //printf("af = %f\n",af); //af = 1111.110962  输出结果 导致失去精度 范围很大 但是精度并不高
    //printf("bf = %f\n",bf); //bf = 1234567898.123400
    //printf("断点\n");
    
    float af = 12.45665345756757656;
    double ad =12.45665345756757656;
    
    printf("af = %.20f\n",af);//可以加精度 这个意思是后面增加了20的精度 =12.45665359497070312500
    printf("ad = %.20f\n",ad);//12.45665345756757602658 %f输出的是10进制形式的浮点数
    
    float af1 = 0.5;
    float af2 = 0.51;//计算机内部是二进制保存 但是又会显示十进制数字 等于说转存了两次
    //10/3 = 0.33333333 *3 -> 0.9999999999 到不了10 会损失精度
    //字符型数据
    //常规字符:用单引号引起来的 一个 引起来
    'a';'$';'b';
    //特殊字符:转义字符 以\开头的字符序列 \n 换行
    '\n';
    //表示一个引号
    '\'';
    //反斜杠本身
    '\\';
    //双引号
    '\"';
    
    '\n';//c此处换行
    
    //字符变量只能保存一个字符 因为一个字符变量在内存中只能占一个字节
    char x1,x2,x3;
    x1 = 'a';//实际上把字符的对应的ascii码方式放在变量所代表的内存中去
    x2 = 'b';
    x3 = '\'';
    
    char c1,c2;
    c1 = 97;    //a
    c2 = 98;    //b
    printf("c1:%c,c2:%c\n",c1,c2);//%c是以字符的形式输出
    c2 = c2 + 4;//c2 = 102 ---->'f'
    printf("c1:%c,c2:%c\n",c1,c2);
    
    //字符串常量:用一对双引号引起来的一堆字符(可以是一个字符 也可以多个字符)
    //printf("老师你好");
    //'s'是字符型常量  "s"是字符串常量
    //字符串变量
    //char c;
    //c = 'a';
    // c = "a"; 这样是不对的
    // \0是字符串标记  但是并不是\0输出出来
    //变量赋初值
    //int a = 3;
    int a,b,w = 6;//只给w赋值 对于没赋值的变量  值是不确定的 大家不能随意拿来用
    //变量是必须先进行定义变量
    
    //数据值类型之间的混合运算
    //此时int型转化成double型 低精度转换成高精度的数据类型
    int x = 1;
    int y = 2.80;
    int z = x + y;
    
    //运算符和算数表达式
    //+ - * / %(取余)也叫模运算
    printf("除法表达式结果为:%d\n",5/3); //两个整数相除 系统会舍弃小数部分
    printf("取余表达式结果为:%d\n",5%3);//取余
    //优先级问题 先乘除 后加减
    //如果优先级相同 则按照优先级先算左面 后右面的方式来处理(从左到右的原则)
    //赋值运算符
    int p;
    p = 4 + 3;//等于说把等号右边值付给左边的变量 ==>i= (4+3);因为加法优先级比等号要高
    //括号的优先级最高
    //强制类型转换运算符 讲一个表达式转换成需要的类型
    int m = 10;
    double n;
    n = (double)m;//这属于强制运算符 但是m类型本身并有变化
    //(int)(x+y);将x+y的值转化成为整型
    //(float)(5%3);讲5%3转化成float型
    //总结强制h转换运算符成一般形式
    //(类型名)(表达式)
    //int(x) 这么写是可以的 但是不建议写
    float ab;
    int ac;
    x = 3.6f;
    i = (int)x;//此时恐怕丢失数据 强制类型转换 此时就会不报警报
    //两种类型转换
    //(1)自动类型转换 系统替你进行数据类型转换
    //(2)强制类型转换 当自动类型转换无法达到目的时就用强制类型转换
    //(3)%取余(其两侧都需要整数) 所以说必须得进行强制类型转换
    i= (int)x % 3;
    //(4)自增自减操作符  ++(自增) --(自减)
    //只能用于变量 不可以用到变量或者表达式
    
    int g = 6;
    ++g;//先加后用
    --g;
    g++;//先用后加
    g--;
    printf("g++的结果是%d\n",g++);//先进行赋值 再进行自加
    printf("++g的结果是%d\n",++g);//先进行自加 再进行赋值
    //减减也是同理
    //表达式: 用+-*/  串起来的一个式子
    // -i++ ==> -(i++)
    // i+++j ==> (i++)+j
    //C语言在编辑时,会尽多可能的从左到右将若干个字符组成一个运算符
    
    
    //printf("111111111111\n");
    //printf("222222222222\n");
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值