首页 > 其他分享 >C语言03-数据类型、运算符

C语言03-数据类型、运算符

时间:2024-04-06 23:34:14浏览次数:30  
标签:类型转换 03 操作数 数据类型 运算符 sizeof 表达式

第 6 章 数据类型

6.5 获取数据存储大小

sizeof	运算符,可以计算出指定数据的字节大小
    
结果是 size_t 类型的数据,对应的格式占位符是 %zu
使用说明:

计算指定数据的字节大小

1、sizeof 和 数据类型名称 一起使用 eg:printf("char:%zu \n",sizeof(char));

2、sizeof 和 变量 可以一起使用 eg: printf("num占用的存储长度: %zu \n", sizeof num );

//变量(常量同理)可以省略小括号,数据类型不可以省略(因为是特殊字符)

3、sizeof 和 常量 可以一起使用 eg:printf("%zu \n", sizeof 8.8L);

使用变量将 sizeof 的计算结果存下来

	size_t a = sizeof 3.4;
       printf("%zu \n", a);

6.6 数据类型转换

① 自动类型转换

1. 运算过程中的自动类型转换 (窄类型->宽类型)
   ① 不同类型的整数之间: ① 窄类型->宽类型 ② 有符号 -> 无符号 ③ char 和 short 都会转为 int 再运算
   ② 不同类型的浮点之间: 精度小->精度大
   ③ 整数和浮点之间:整数 -> 浮点

2. 赋值过程中的自动类型转换
   给变量赋值的时候,值会自动转为变量的类型;
   可能会发送宽类型转窄类型,造成精度损失
   
eg:/ 3000 补码:00000000000000000000101110111000
    // 将 3000 存到 8bit 中,存后8位 1011 1000
                         ——> 反码:1011 0111——> 源码:1100 1000

注:计算机上存储的是 补码,计算之后还是补码,读取显示时:需要把补码转化位原码

② 强制类型转换

(数据类型) 数据

注:当 数据 为一个表达式时,应改变表达式中其中一个 元 的数据类型

第 7 章 运算符

运算符: 运算符是一种特殊的符号,用于数据的运算、赋值和比较等。

操作数: 运算符运算的数据。

表达式: 表达式指的是一组操作数、运算符的组合,表达式一定具有值 ,一个变量一个常量也是表达式。

运算符4要素: 含义和功能、操作数个数、所组成表达式的值、该运算符有无副作用

运算符分类(按操作数个数): 一元运算符、二元运算符、三元运算符

运算符分类(按功能): 算术运算符、关系(比较)运算符、逻辑运算符、位运算符、赋值运算符、其他运算符

7.1 算术运算符

1. 正号、负号(+ , -)		——无副作用
   正号: 一元运算符; 所组成表达式的值:操作数作为表达式的值; 无副作用
   负号: 一元运算符: 所组成表达式的值:操作数取反作为表达式的值;无副作用
  
2. 加、减、乘、除(+,-,*,/)		——无副作用
   二元运算符、无副作用
   
3. 取余(取模)(%)
   ① 表达式的值的符号(正负)与第一个操作数一致
   ② 取余运算符的操作数必须都是 整数
  1. 递增、递减(++,--) ——有副作用

    ① 递增、递减运算符可以在操作数前面,也可以在后面
    ② 运算符在前在后对操作数的副作用是 相同的
    ③ 表达式的值:
    如果运算符在后(n++),取操作数自增或自减之 前 的值作为表达式的值

     	如果运算符在前(++n),组操作数自增或自减之 后 的值作为表达式的值
    
特殊使用说明:
	复杂表达式中的两个子表达式都带有副作用,且副作用针对同一个变量:
    C标准未作出规定,未规定计算顺序,由编译器自行决定
    //强烈不建议写该形式
eg:    s = (++ n) + (++ n);
       printf("s=%d", s);  //无法确定输出的值

注意:带有副作用的运算符要求 操作数 必须是 变量的形式!

7.2 关系(比较)运算符

1. 包括: >、 >=、 <、 <=、 ==、 !=
2. 都是 2 个操作数
3. 表达式的值是 0 或者 1,是 int 类型

7.3 逻辑运算符

真表示的是 非零;假表示的是 0

1. 逻辑与 &&	// 可以称为and、并且
   表达式的值: 两个操作数都为真(非0),表达式的值才是1,否则是0。
   逻辑与短路: 如果第一个操作数为假,第二个操作数直接不会执行

2. 逻辑或 ||
   表达式值: 两个操作只要一个为真,表达式值就是1,只要两个操作数都为假,表达式的值才是0
   逻辑或短路:如果第一个操作数为真,第二个操作就不会执行
   
3. 逻辑非 !
   一元运算符
   表达式的值:操作数为真,表达式的值是0,操作数为假,表达式的值是1

7.4 位运算符

计算机上存的是补码,用补码计算后需转换为原码

1. 按位与:&; 按位或:|; 按位异或:^
2. 按位取反: ~
3. 按位左移: <<; 按位右移: >>  

【左移 值变大,(*2的移动位数的次方);右移 值变小,(/2的移动位数的次方)】
	/**
     *  98 向左移动2位 9800 向左移动8位 98*10^8
     *  192 向右移动1位 19.2 
    */

总结

数据类型转换

1. 自动类型转换(隐式转换)
   1.1 运算过程中
       ① 整数之间:窄类型->宽类型;有符号->无符号; char和short运算中转为int
       ② 浮点之间:精度小—>精度大
       ③ 整数和浮点数: 整数->浮点
   1.2 赋值过程中

2. 强制类型转换(显示转换)
   (类型名)

运算符

1. 运算符4要素
   功能、操作数个数、所组成的表达式的值、有无副作用
   
2. 算术运算符
   + - * / 
   %
   + -
   ++ --

3. 关系(比较)运算符
   > >= < <=
   == !=
   
4. 逻辑运算符
   &&
   ||
   !
   
5. 位运算符
   & | ^
   ~
   << >>

附录

再 tasks.json 中添加,提高警告等级:

"-Wconversion",
"-Wextra",

标签:类型转换,03,操作数,数据类型,运算符,sizeof,表达式
From: https://www.cnblogs.com/petard/p/18118193

相关文章

  • 后端学习记录~~JavaSE篇(day03-流程控制语句-上)
    if...else与Switch...case语句一、表达式和语句表达式:(1)变量或常量+运算符构成的计算表达式(2)new表达式,结果是一个数组或类的对象。(3)方法调用表达式,结果是方法返回值或void(无返回值)。语句:(1)分支语句:if...else,switch...case(2)循环语句:for,while,do...while(3)跳转语句:brea......
  • P2036 [COCI2008-2009 #2] PERKET
    题目描述Perket是一种流行的美食。为了做好Perket,厨师必须谨慎选择食材,以在保持传统风味的同时尽可能获得最全面的味道。你有 n 种可支配的配料。对于每一种配料,我们知道它们各自的酸度 s 和苦度 b。当我们添加配料时,总的酸度为每一种配料的酸度总乘积;总的苦度为每一种......
  • MySQL中的逻辑运算符,位运算符
    转自:https://blog.csdn.net/Sihang_Xie/article/details/125480206一、 逻辑运算符MySQL中支持4种逻辑运算符:运算符作用NOT或!逻辑非AND或&&逻辑与OR或||逻辑或XOR逻辑异或以上4种逻辑运算符都非常简单,如果有其他编程语言的基础,看一下以下的例......
  • CF30D King's Problem? 题解
    CF30D题意有\(n+1\)个点,其中的\(n\)个点在数轴上。求以点\(k\)为起点走过所有点的最短距离,允许重复。思路有两种情况:\(k\)在数轴上(如图1)。\(k\)在第\(n+1\)个点上(如图2)。图1:图2:像第一种情况:一定存在数轴上某点\(k\),使得人先走遍\(1\simk\),回来,再走遍......
  • 16天【代码随想录算法训练营34期】第六章 二叉树part03(● 104.二叉树的最大深度 559
    104.二叉树的最大深度#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defmaxDepth(self,root:O......
  • CCF-CSP认证202403个人总结以及部分代码
    第一次参加,总分340,这个成绩个人觉得比较满意了,毕竟考前一直在划水,也很久没写算法题了。写到第四题,觉得还剩一个小时肯定写不完就又开始划水,暴力模拟完了就开始翻网页抄自己的提交记录,无所事事,想提前交卷。考试结束在网上一搜,第四题好像不是很难,瞬间觉得没写到最后亏了,开始后悔。......
  • 030、送杨氏女
    030、送杨氏女唐●韦应物永日方戚戚,出行复悠悠。女子今有行,大江溯轻舟。尔辈苦无恃,抚念益慈柔。幼为长所育,两别泣不休。对此结中肠,义往难复留。自小阙内训,事姑贻我忧。赖兹托令门,任恤庶无尤。贫俭诚所尚,资从岂待周。孝恭遵妇道,容止顺其猷。别离在今晨,见尔当何秋?居闲......
  • 031、东郊
    031、东郊唐●韦应物吏舍跼终年,出郊旷清曙。杨柳散和风,青山澹吾虑。依丛适自憩,缘涧还复去。微雨霭芳原,春鸠鸣何处。乐幽心屡止,遵事迹犹遽。终罢斯结庐,慕陶直可庶。 【现代诗演译】经年的,憋烦在办公衙门里。清晨、郊外、清新曙色,开阔了我的心胸。 杨柳、春风、青......
  • ZCMU-1033
    我觉得这位大佬说的已经很好了,可以直接看她的思路了;大佬思路但是她的代码没有考虑到1111的情况,代码思路这个是可以的很长且没有注释;#include<bits/stdc++.h>usingnamespacestd;longlongd[40][40];longlongc[40][40];longlonga[40];longlongx,y;intk,b;......
  • C113 带修莫队 P1903 [国家集训队] 数颜色/维护队列
    视频链接:   LuoguP1903[国家集训队]数颜色/维护队列//带修莫队O(n^(5/3))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>usingnamespacestd;constintN=1000005;intn,m,B,mq,mr,a[N];intsum,cnt[N],ans[N];st......