首页 > 其他分享 >02-数据类型/常量/变量/运算符

02-数据类型/常量/变量/运算符

时间:2023-05-14 15:01:05浏览次数:48  
标签:02 char ch 常量 -- 数据类型 运算符 bool

1.数据类型

1.1 数据类型分类

  • 构造类型--用户自定义的数据类型
  • 存储负数使用有符号数
  • 字符型也分为有符号数和无符号数
#include <stdio.h>

int main()
{

}

1.2基本数据类型

bool类型

  • bool不是基本数据类型,使用的时候需要加入头文件
#include <stdbool.h>
#include <stdio.h>
#include <stdbool.h>  
int main()
{
  /*
    非0 为真
    0   为假
  */
  bool a;
  
  a = true;
  a = false;
 
  if(a) {
    print("true %d\n",a);
  }esle{
    print("false %d\n",a);
  }
  return 0;
}
#include <stdio.h>
#include <stdbool.h>  
int main()
{
  /*
    非0 为真
    0   为假
  */
  bool a;
  
  a = -1;  // a表示-1,非0为真
 
  if(a) {
    print("true %d\n",a);  // 结果为true 1
  }esle{
    print("false %d\n",a);
  }

  return 0;
}
  • 代码编译之前有一个预处理的过程,预处理过程会将一些宏进行展开
gcc -e ctype.c -o bool.i  
  • 编译的时候会将<stdbool.h>进行展开,编译文件中的bool被替换为_Bool说明进行了宏替换,这个宏是定义在<sdtbool.h>中的
// 原始的<stdbool.h>文件中,定义了宏,预处理的时候会进行宏替换,和头文件展开
#define bool _Bool
#define true 1
#define false 0

#define _Bool bool
#define bool bool

使用bool类型的两种方式

1.加头文件,使用bool(宏定义的布尔类型),如果想要使用true 1 false 0 要加头文件
2.不加头文件,使用_Bool,_Bool是基本数据类型

char类型

  • char 1个字节 -128-127或者0-255
  • signed char 1字节 -128-127
  • unsigned char 1字节 0-255
  • unsigned char 0000_0000 - 1111_1111 (0-255);255的计算可以看作是先加1,则最大值变为1_0000_0000(2^8 = 256),256-1 = 255
  • 有符号数的最大值,0111_1111(2^7-1 = 127)
  • -127 -- 原码 1111_1111,反码 1000_0000,补码 1000_0001
  • -128 -- 补码在内存中为1000_1000
#include <stdio.h>

int main()
{
  char ch;
  ch = 127;  // -128-127 是可以的
  ch = 65; // 可以打印A
  ch = 128; // 正数128赋值给ch,ch得到的补码是1000_000,char类型存储-1
  ch = 129; // 129的补码是1000_0001,char类型中127的补码也是1000_0001,所以存储127 
  
  unsigned char b;
  b = -1;  //b给的原码是1000_0001 反码 1111_1110 补码1111_1111  
           // b的补码对应unsigned char的存储值是255
  printf("ch=%d\n,%c\n",ch,ch);
  return 0;
}

整型

  • short -- 2个字节和int -- 4字节--长度不同
  • sizeof(类型) -- 查看数据类型占几个字节
  • short -32768-32767
  • unsigned short 0-65535
#include<limits.h>  -- 这个头文件中有数据类型数据最大最小值的宏定义

2.常量

2.1 基本数据类型常量

常量是指在程序运行期间数值不发生变化的数据,整型常量通常简称为整数

整型常量

整数可以是十进制数\8进制数\十六进制数

// 3365
06434 -- 8进制数
0xdlc -- 十六进制数

浮点型数据

浮点型常量又称为实数,一般含有小数部分;在c语言中,实数只有十进制的实数,分为单精度和双精度;实数有两种表示方法,即一般形式和指数形式

3.24 
3.14 
-12.5

指数形式

  • 通常表示特别大的数或者特别小的数
  • e/E表示指数
1.176e+10
-3.5789e-8
#include <stdio.h>
int main()
{
  int a = 0x12345678;
  float b = 2.3e+10;
  printf("%d %x %o\n",a,a,a);
  printf("%e,%f\n",b,b);
  
  return 0;
}

字符型常量

字符常量指一个单一字符,其表示形式是由两个单引号包括的一个字符

'a'
'A'
'?'
'$'
'0'

在c语言中,字符常量具有数值,字符常量的值就是其对应的ASCII码制,可以将字符常量看作是一个字节的整数

a = 'F'; // 将70给a   A -65  F是70
b = 'A'+2; // b中存储的是C字符
u = 'B'+' '; // 66+32 = 98 --b -- 大小写字母转换

2.2 标识常量

标签:02,char,ch,常量,--,数据类型,运算符,bool
From: https://www.cnblogs.com/Icer-newer/p/17399176.html

相关文章

  • 2023/5/14 遇到关于mongodb部署的问题
    之前使用关于mongodb5的版本中,linux系统中tar解压mongodb文件夹后的bin目录中mongod是启动mongo服务,而里面默认自带一个连接mongodb的shell脚本mongo而这几天使用mongodb6的版本中发现mongo脚本没有了,去网上查看发现是mongodb发行了一个新的shell脚本工具mongosh,这个需要自己安装......
  • 26 IIC(四)AT24C02 EEPROM
    1.AT24C02简介设备使用AT24C02芯片(EEPROM)1.1原理图1.2引脚描述1.3寻址AT24C02使用7bit表示设备地址,其中高四位固定为1010。结果原理图可知EEPROM的地址为0x501.4读写操作需要注意一点EEPROM在接受到一帧写数据后会进入一段时间(twr)的内部写周期。此时间段内不响应......
  • [GDOUCTF 2023]Check_Your_Luck
    得到一个c++的源文件:进VSCODE也行,devc++也行IDA也行:得到一个方程组,解开就行,大力推荐手搓(增加数学的能力到了)(我不用)典型的z3,上脚本:s=Solver()v,w,x,y,z=Ints('vwxyz')s.add(v*23+w*-32+x*98+y*55+z*90==333322)s.add(v*123+w*-322+x......
  • SMU Spring 2023 Contest Round 3(2023年湘潭大学新生赛)
    ProblemA.签到啦从大到小排序,累加大于行李w时输出下标即可intans;voidsolve(){cin>>n>>m;intans=0;vector<int>a(n);for(inti=0;i<n;i++){cin>>a[i];}sort(a.begin(),a.end());reverse(a.begin......
  • ECMAScript6新特性【对象的扩展(属性的简洁表示法) 对象的新增方法 、运算符的扩展 】(
    ......
  • 2023 SMU RoboCom-CAIP 选拔赛
    A.小斧头  #include<map>#include<set>#include<cmath>#include<queue>#include<stack>#include<cstdio>#include<vector>#include<climits>#include<cstring>#include<cstdlib>......
  • [HUBUCTF 2022 新生赛]help
    题目告诉我们要走迷宫了嘛,那么主要就是找地图:查壳:64位,进IDA:创建地图?跟进去看看:看看num里装了啥:emm挺长的,有能力的小伙伴可以手搓一个地图,反正我没手搓出来QWQ再看看判断,说是走54步,且check满足,那么先动调拿到地图吧,上步骤:在CreateMap()的左边双击,设置断点:随便......
  • SMU Spring 2023 Contest Round 1
    B.ContestPreparation#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<vector>#include<queue>#include<set>#include<map>#defineinf0x3f......
  • SMU Spring 2023 Contest Round 2
    M.DifferentBilling#include<map>#include<set>#include<cmath>#include<queue>#include<cstdio>#include<vector>#include<climits>#include<cstring>#include<cstdlib>#include<......
  • 2023-05-14 leetcode竞赛
    6430. 找出转圈游戏输家mysolution100%passclassSolution:defcircularGameLosers(self,n:int,k:int)->List[int]:seen=set()now_num=1step=1seen.add(1)while1:stepSum=step*ktotal=......