类型 变量 进制

一、类型

数据类型是程序的基础,决定了数据的意义,也决定了我们能在数据上所执行的操作。

http://www.cnblogs.com/Shuqing-cxw/p/9189411.html 2文件的本质可以知道,数据类型可以理解为固定大小内存的别名;

不同的数据类型,用于应对各种不同的需要;最简单的例如加减法使用整数型,而除法可能需要浮点类型更符合实际;

在存储空间中,使用数据类型来向整个存储空间申请一个相应大小的内存块以供使用;

1.1 基本类型

  1. 内置类型包括了算术类型和空类型;
  2. 算术类型分为两类:整型和浮点型;
  3. 整型包括字符类型和布尔类型(C++);

1.2 自定义类型

  1. C语言中的结构体类型;
  2. C++语言中的类类型;
  3. C/C++的typedef关键字所定义的类型、枚举类型、联合/共用类型;

二、变量

通过使用数据类型来创建一些变量来形象具体的描述并操作这些固定大小的内存;

故可以看出,变量的本质就是一段实际连续存储空间的别名;即,所占用的内存大小同数据类型所占的空间大小,且变量需要依赖归属某个数据类型;

程序中通过变量来申请并命名某一存储空间;即术语中的声明

通过操作变量达到使用该存储空间的目的;

2.1 变量的定义

类型说明符 随后紧跟着由一个或多个变量名组成的列表,其中变量名以逗号分隔最后以分号结束;定义时可以为一个或多个变量赋初始值;

int sum, value;  //声明并创建了sum和value变量,类型为int;

2.2 初始化变量

初始化变量就是为变量赋一个初始值。C/C++中,初始化在声明中完成,即只需要在变量名后面加上赋值运算符 = 和待赋给变量的值;

int sum = 0;

注意:初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,赋值的含义是把对象的当前值擦除,并以一个新值来替代。在声明变量时未进行初始化的变量所存储的数值是系统中所分配给该变量内存地址上的原值;

1 #include <stdio.h>
2 int main()
3 {
4     int n;
5     printf("n = %d\n", n);
6     n = 5;
7     printf("n = %d\n", n);
8     return 0;
9 }

三、进制

计算机通过关闭和打开状态组合来表示信息,用二进制非常方便,即用0和1表示,即比特序列,现代计算机普遍1byte使用8bit表示。

3.1 计算机中的八进制转二进制

  1. 8=2^3,即每个八进制位对应3个二进制位,按位拼接;
  2. 一个3位的八进制数可能要用9位二进制数来表示;
  3. 在C/C++中表示八进制数在其前面添加0标识
1  Example:0377→377(8)
2    7=111
3    3=011
4  故0377  = 1111 1111
5  说明八进制若标识比377还大的数需要2字节来表示;

3.2 计算机中的十六进制转二进制

  1. 16=2^4,即每个十六进制位对应4个二进制位,按位拼接;
  2. A=10,B=11,C=12,D=13,E=14,F=15
  3. 在C/C++中表示十六进制数在其前面添加0x或0X标识
1  Example: 0xA3F→A3F(16)
2      A=1010
3      3=0011
4      F=1111
5  故0xA3F = 0000 1010 0011 1111
6  2个十六进制位符号表示一个8位比特序列,故以十六进制很方便表示字节值

1.3 显示八进制和十六进制

 1 /*C语言中显示不同的进制需要使用不同的转换说明:
 2  *以十进制显示输出使用%d,
 3  *以八进制显示输出使用%o或%#o(在数字前面显示进制代表符号)
 4  *十六进制显示输出使用%x或%X或%#X;
 5 */
 6 #include <stdio.h>
 7 int main()
 8 {
 9     int i = 100;
10     printf("i_dec= %d, i_octal= %o, i_hex= %x\n", i, i, i);
11     printf("i_dec= %d, i_octal= %#o, i_hex= %#x\n", i, i, i);
12     return 0;
13 }
14 //C++显示输出示例
15 #include <iostream>
16 using namespace std;
17 int main()
18 {
19     int x = 100;
20     cout << "" << dec << x << endl
21
22          << "0" << oct << x << endl
23
24          << "0x" << hex << x << endl;
25     return 0;
26 }

小结:显然,八进制和十六进制记数系统在表达与计算机相关的值时比十进制方便,但需要主要的是使用不同的进制数是为了方便,不会影响数被存储的的方式,都是以二进制进行编码;

四、补充部分

4.1类型与变量的关系

 1 //类型与变量的关系
 2 /* sizeof关键字返回字节数表示所占的内存大小,sizeof(variable)
 3  * printf()函数为C语言打印输出函数,printf("转换说明",变量);
 4 */
 5 #include <stdio.h>
 6 int main()
 7 {
 8
 9     char c;
10     int i;
11
12     printf("sizeof(char) = %d, sizeof(c) = %d\n", sizeof(char), sizeof(c));
13     printf("sizeof(int ) = %d, sizeof(i) = %d\n", sizeof(int), sizeof(i));
14
15     return 0;
16 }

结论:

1.变量必然隶属于某个数据类型;

2.变量所占用的内存大小取决于所归属的数据类型;

4.2 变量声明与定义

C/C++支持分离式编译机制,即将程序分割为若干个文件,每个文件可被单独编译;

为实现支持该机制,C/C++语言将声明和定义区分开来,声明使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明,而定义则负责创建于变量名字关联的实体

变量声明规定了变量的类型和名字,定义相比声明还做了申请存储空间的动作,如果可能还会为变量赋一个初始值(取决于用户);

若想声明一个变量而非定义它,就在变量名前添加关键字 extern,且不需要显式初始化变量;

1 extern int i; //声明i,而非定义i
2
3 int i;        //声明并定义i

注意:

任何包含了显式初始化的声明,在概念上都会转变为定义

当extern关键字标记的变量显式赋给了一个初始值,编译器将会报错,不允许用户这样声明定义;

 1 //test.h
 2 int n = 5;
 3
 4 //main.c
 5 #include <stdio.h>
 6 #include "test.h"
 7 int main()
 8 {
 9     extern int n;
10     printf("n = %d\n", n);
11
12     extern int n;
13     extern int n;
14     n = 6;
15     printf("n = %d\n", n);
16
17     extern int n = 0;   //error
18     return 0;
19 }

小结:变量能且只能被定义一次,但可以被多次声明;

4.3标识符

C++标识符由字母、数字、下划线组成,且必须以字母或下划线开头;标识符在发展至今一直区分大小写字母, 已放开了长度上的限制;

int somename, someName, SomeName, SOMENAME;//定义了4个变量

4.4 变量命名规范

  1. C++语言保留一些名字供语言本身使用,同时也为标准库保留了一些名字,如下操作符用户将不能用作标识符来声明定义
  2. 用户自定义的标识符不能连续出先两个下划线,也不能以下划线紧连大写字母开头;
  3. 定义在函数体外的标识符不能以下划线开头;
  4. 标识符要能体现实际含义,提高程序的可读性
  5. 变量名一般用小写字母,如index;
  6. 用户自定义的结构体或类名一般以大写字母开头,如,Student;
  7. 如果标识符由多个单词组成,则单词间应用下划线以明显的区分,如student_name;
//C++ 关键字
alignas     continue     friend    register           true
alignof     decltype     goto      reinterpret_cast   try
asm         default      if        return             typedef
auto        delete       inline    short              typeid
bool        do           int       signed             typename
break       double       long      sizeof             union
case        dynamic_cast mutable   static             unsigned
catch       else         namespace static_assert      using
char        enum         new       static_cast        virtual
char16_t    explicit     noexcept  struct             void
char32_t    export       nullptr   switch             volatile
class       extern       operator  template           wchar_t
const       false        private   this               while
constexptr  float        protected thread_local
const_cast  for          public    throw

//C++操作符替代名
and         bitand       compl     not_eq    or_eq    xor_eq
and_eq      bitor        not       or        xor

原文地址:https://www.cnblogs.com/Shuqing-cxw/p/9190227.html

时间: 2024-10-27 18:55:52

类型 变量 进制的相关文章

java 整型类型和进制转换

类型 占用存储空间 表数范围 Byte 1字节 -128~127 Short 2字节 -215 ~ 215-1 (-32768~32767) Int 4字节 -231 ~ 231-1 (-2147483648~2147483647) 约21亿 Long 8字节 -263 ~ 263-1 System.out.println(Integer.toBinaryString(a)); //整型转二进制 System.out.println(Integer.toOctalString(a)); //整型

Java 字符串类型16进制字面值转成字面值字节数据工具类

private static byte hexValueOf(String hex) { byte result = 0; if (hex.charAt(0) == '0' && (hex.charAt(1) == 'X' || hex.charAt(1) == 'x')) { for (int i = 2; i < hex.length(); i++) { char temp = hex.charAt(i); if (i == 2) { if (temp == '0' || tem

c#中的进制转换

今天偶然接触到了一个位或的表达式,就像着自己做一个进制之间的转换器,基本功不扎实,二进制之间的运算稀里糊涂的. 常见的进制方式,主要有二进制,八进制,十进制和十六进制,通用的转换方式是把非十进制的数据类型转换成十进制的,然后再转换成其他类型. 进制转换的入口函数: /// <summary> /// 进制转换 /// </summary> /// <param name="input"></param> /// <param nam

java中进制之间的转换

//十进制转其他进制 Integer.toHexString(10); //将10转换为十六进制,返回字符串类型 Integer.toOctalString(10); //将10转为八进制,返回字符串类型 Integer.toBinaryString(10); //将10转为二进制,返回字符串类型 //其他进制转十进制 //十六进制转十进制,例如:0xFFFF Integer.valueOf("FFFF",16).toString(); //valueOf()方法返回Integer类型

对两个N进制字符串求和

// nSystemStrSum.cpp : 定义控制台应用程序的入口点. // /* N 进制的 两个字符串求和 字符串由0-9 a-z 组成 思路: 若输入不合法,输出提示退出,否则按如下步骤进行 1把两个字符串转成等成长,在短的那个串前加‘0’ 2将串中的每一个字符转成数值 3从后到前 每一位临时变量= 串一的位+串二对应的位 +进位 此位上的数值 = 每一位临时变量%进制 进位 = 每一位临时变量/进制 将数据转成字符 即systemValueStr[此位上的数值]; */ #inclu

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

【Xcode学C-4】进制知识、位运算符、变量存储细节以及指针的知识点介绍

一.进制知识 (1)默认是十进制.八进制前面加0.即int num1=015;是13.十六进制前面加0x/0X.即int num1=0xd.结果是13.二进制前面是0b/0B,即int num1=0b1101,结果是13. (2)输出能够是八进制.十进制.十六进制输出.各自是%o.%d.%x,但没有二进制格式直接输出. (3)3位二进制位是0~7,三个3位二进制位就相当于八进制数据.如000001101(二进制的13),我们划分成三个一组000 001 101,再分别换算成十进制的就是0 1 5

【String与基本类型之间的转换】以及【进制转换】

1. 基本数据类型---->字符串类型: 方法一:使用连接一个空字符串,例如  基本数据类型+“” : 方法二:静态方法 String.valueOf(),具体有: String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串 String.valueOf(char c) : 将 char 变量 c 转换成字符串 String.valueOf(char[] data) : 将 char 数组 data 转换成字符串 String.valueOf(char[]

黑马程序员——C语言基础---进制内存分析与类型说明符

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一. 进制 1. 什么是进制 l 是一种计数的方式,数值的表示形式 汉字:十一   十进制:11  二进制:1011  八进制:13 l 多种进制:十进制.二进制.八进制.十六进制.也就是说,同一个整数,我们至少有4种表示方式 2. 二进制 1> 特点:只有0和1,逢2进1 2> 书写格式:0b或者0b开头 3> 使用场合:二进制指令\二进制文件,变量在内存中就是二进制存储 4>