c语言数据转移,重温C语言(2)之数据

一 数据类型

数据就是代表某些信息的数字和字符。

按计算机的储存方式可分为两大基本类型:整数类型和浮点数类型。

1 关键字

初始

C90

C99

int

signed

_Bool

long

void

_Complex

short

_Imaginary

unsigned

char

float

double

2 存储单元

首先得记住,计算机内部都是以二进制进行编码的。

bit: 位,最小的存储单元,可以储存0或1。位是计算机内存的基本构成块;

byte: 字节,是常用的计算机存储单位。对于几乎所有的机器,1字节均为8位。

word:字,设计计算机时给定的自然存储单元,对于8位计算机1字长只有8位。后来快速发展,已经从8位、16位、32位、发展到现在的64位。计算机的字长越大,其数据转移越快,允许的内存访问也更多。

3 整数

整数是没有小数部分的数。计算机用二进制数字存储整数。例如数字7的二进制存储是00000111。

4 浮点数

有小数点的值就是浮点数。

因为在任何区间内(如,1.0到2.0之间)都存在无穷多个实数,所以计算机的浮点数不能表示区间内所有的值。浮点数通常只是实际值的近似值,比如,7.0可能被储存为浮点值6.99999。

二 基本数据类型

int、long、short、unsigned、char、float、double、signed、_Bool、_Complex和_Imaginary。

1. int

有符号整型,可以是正整数、负整数或0。

一般而言,储存一个int要占用一个机器字长。即16位计算机1个int值占16位(-32768~32768),32位计算机用32位存储一个int值,64位计算机用32位存储一个int值。

ISO C规定int的取值范围最小为-32768~32767。

(1)进制

相对于十进制,我更喜欢八进制和十六进制。8和16都是2的幂次方,而10不是,通俗说八进制和十六进制记数系统在表达与计算机相关的值时很方便。例如16位中的十进制65536用十六进制表示是10000,十六进制的每一位数由4位二进制组成,例如5的二进制是0101,6的二进制是0110,因此十六进制56的位组合是 01010110。

在C语言中,用特定的前缀表示使用哪种进制。0x或0X前缀表示十六进制值,所以十进制数16表示成十六进制是0x10或0X10。与此类似,0前缀表示八进制。

下面代码显示了三种进制:

#include

int main(){

int x = 73;

printf("十进制 = %d,八进制 = %o,十六进制 = %x\n", x, x, x);

printf("十进制 = %d,八进制带前缀 = %#o,十六进制带前缀 = %#x", x, x, x);

return 0;

}

94c0af198275

(2)其他整数类型

short:有符号类型,占用的存储空间可能比int类型少,常用于较小数值的场合以节省空间;

long:有符号类型,占用的存储空间可能比int多,适用于较大数值的场合;

long long:有符号类型,占用的存储空间可能比long多,适用于更大数值的场合,该类型至少占64位;

unsigned int:间写 unsigned int, 无符号整型,只适用于非负值,用于表示正负号的位现在用于表示另一个二进制位,所以无符号整型可以表示更大的数,16位unsignedint允许的取值范围是0~65535。

根据机型的不同,各种整数类型占用的空间也不同:

最早 short 16位,int 16位,long 32 位;

后来 short 16位, int 32位,long 32位;

现在使用了64位的处理器 short 16位, int 16或32位(根据计算机自然存储单元定),long 32位, long long 64位。

溢出:表示值超出了该类型的代表范围。比如当类型的值达到最大值时,二进制存储的所有位全是1即1111...111, 在加 1 的话就会造成溢出,所有为进位变成了0,最高位的1超出了类型的二进制位数就会被抛弃,所以最大值加1的结果就是变成了最小值。

unsigned short us = -1;

printf("%d\n", us); // 65535

2. char

用于存储字符。计算机使用特定的整数来存储特定的字符,所以 char 类型实际存储的是整数,在ASCII码中,65代表A。

商用的统一码(Unicode)创建了一个能表示世界范围内多种字符集的系统,目前包含的字符已超过110000个。

C 语言定义char类型占用的位数是一个字节。

printf("%c\n", 65); // A

printf("%c\n", 'A'); // A

转义序列

含义

\a

警报

\b

退格

\f

换页

\n

换行

\r

回车

\t

水平制表符

\v

垂直制表符

3. _Bool

布尔值即true和false,c语言用1表示true,0表示false。技术层面是只占1位存储空间的整数类型。

4. 可移植类型:stdint.h和inttypes.h

C99新增了两个头文件stdint.h和inttypes.h,以确保C语言的类型在各系统中的功能相同。

精确宽度整数类型(exactwidthintegertype):如int32_t表示整数类型的宽度正好是32位。

5. float, double, long double

printf("int 类型有 %d 字节\n", sizeof(int));

printf("char 类型有 %d 字节\n", sizeof(char));

printf("long 类型有 %d 字节\n", sizeof(long));

printf("long long 类型有 %d 字节\n", sizeof(long long));

printf("double 类型有 %d 字节\n", sizeof(double));

printf("long double 类型有 %d 字节\n", sizeof(long double));

printf("_Bool 类型有 %d 字节\n", sizeof(_Bool));

printf("float 类型有 %d 字节\n", sizeof(float));

int 类型有 4 字节

char 类型有 1 字节

long 类型有 8 字节

long long 类型有 8 字节

double 类型有 8 字节

long double 类型有 16 字节

_Bool 类型有 1 字节

float 类型有 4 字节

三 算法前瞻

/**

* 有一根27厘米的细木杆,

* 在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。

* 木杆很细,不能同时通过两只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,

* 它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。

* 假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最短时间和最长时间。

*/

void antCode() {

int antSize = 5;

double nums[] = {3, 7, 11, 17, 23};

printf("sizeof(nums)=%d\n", antSize);

double lineSize = 27;

double max = 0;

double min = nums[0];

for (int i = 0; i < antSize; ++i) {

double left = nums[I];

double right = lineSize - nums[I];

printf("%d: left=%f, right=%f\n", i, left, right);

max = fmax(max, fmax(left, right));

min = fmax(min, fmin(left, right));

}

printf("max=%f; min = %f\n\n\n\n\n", max, min);

}

/**

* 找出符合如下条件的 9位数:

* 这个数包括了 1 ~ 9这 9个数字。这个 9位数的前 n位都能被 n整除,若这个数表示为 abcdefghi,则 ab可以被 2整除, abc可以被 3整除…… abcdefghi可以被 9整除。

*/

void nineNumber(){

for (int i = 1; i < 10; ++i) {

nineNumberLogic(i, 2);

}

}

void nineNumberLogic(int a, int n){

if (n > 9) {

printf("%d\n", a);

return;

}

int first = a * 10;

// 这里可以判断奇偶数来进一步提高效率

for (int i = 1; i < 10; ++i) {

int b = first + I;

if (b % n == 0) {

nineNumberLogic(b, n + 1);

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对esp和ebp分析来了解函数的调用过程

esp&#xff1a;扩展栈指针寄存器&#xff0c;是指针寄存器的一种&#xff0c;用于存放函数栈顶指针&#xff08;栈顶指针&#xff09; ebp&#xff1a;扩展基址指针寄存器&#xff0c;也被称为帧指针寄存器&#xff0c;用于存放函数栈底指针&#xff08;栈底指针&#xff09;。…

仿射变换 c语言,c语言数字图像处理(三):仿射变换

仿射变换及坐标变换公式几何变换改进图像中像素间的空间关系。这些变换通常称为橡皮模变换&#xff0c;因为它们可看成是在一块橡皮模上印刷一幅图像&#xff0c;然后根据预定的一组规则拉伸该薄膜。在数字图像处理中&#xff0c;几何变换由两个基本操作组成&#xff1a;(1)坐标…

C和汇编混合编程----实现浮点数的加减乘除

加法 C程序&#xff1a; #include "stdio.h"int main() {float a1.0;float b2.34;float c;cab;printf("c%f",c);return 0; }反汇编之后&#xff0c;实现加法的关键程序 5: float a1.0; 00401028 C7 45 FC 00 00 80 3F mov dword ptr [eb…

【Wordpress】分享500多款国外WordPress经典主题 其之三

从国外网站上淘来的WordPress主题&#xff0c;以前都是放在本人博客xcodeland.mooo.com上的后来空间挂掉了就转到这里来与大家分享。 modernclean 下载地址 just-business 下载地址 redrum 下载地址 aneducation 下载地址 artsie 下载地址 eveningalone 下载地址 wasabi …

C和混编混合编程----strcpy缓存溢出原理

今天老师给了一到程序&#xff0c;让我们分析分析原理&#xff0c;关于strcpy缓存溢出原理的&#xff0c;反汇编一遍遍调试&#xff0c;终于看明白了&#xff0c;记录一下 C程序&#xff1a; #include "string.h" #include "stdio.h" char *shellcode&quo…

C和汇编混合编程--------函数调用后ebp、esp值问题

今天老师又给了一个程序&#xff0c;让我们分析&#xff0c;记录一下分析过程 程序&#xff1a; #include "stdio.h" #include "string.h"char *shellcode"\x64\x65\x66\x67\x68\x69\x70\x71\x05\x10\x40\x00"; void fun1(int a, int b) {print…

android游戏黑屏,第五人格游戏进不去黑屏解决办法

小编今天给各位玩家朋友们带来的是第五人格游戏进不去黑屏解决办法&#xff0c;很多的玩家朋友们在第五人格更新后都出现了黑屏、游戏无法进入等情况&#xff0c;这应该怎么办呢&#xff1f;小编把解决方法给大家整理在了下方&#xff0c;感兴趣的小伙伴们快来跟小编一起往下看…

线性表----顺序表

线性表的定义 线性表是具有相同数据类型的n个数据元素的有限序列&#xff0c; 逻辑特性 除第一个元素外&#xff0c;每个元素只有一个前驱&#xff0c;除最后一个元素外&#xff0c;每个元素都有一个后继 物理结构 线性表的存储结构有顺序存储结构和链式存储结构&#xff…

树、二叉树、二叉搜索树_检查二叉树是否为BST(二叉搜索树)

树、二叉树、二叉搜索树Description: 描述&#xff1a; This article describes how to check whether a given tree is BST or not? This problem came in coding round of Microsoft. 本文介绍如何检查给定的树是否是BST &#xff1f; 这个问题来自微软的编码回合。 Probl…

栈溢出利用-----jmp esp

通过jmp esp利用栈溢出&#xff0c;首先我们要找出jmp esp 的地址&#xff0c;因为系统不同&#xff0c;通用jmp esp的地址可能不同&#xff0c;下面的代码是找出jmp esp的地址的&#xff1a; #include<windows.h> #include<iostream.h>#include<tchar.h> i…

android 队列上传图片,话说android端七牛图片上传

七牛图片上传业务流程如下图(这是官方的图)&#xff1a;由上图可知&#xff0c;要想实现图片上传&#xff0c;是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行)接下来步骤如下&#xff1a;1、首先肯定是要有一个七牛的账号&#xff0c;并创建一个空间2、客户…

bst 删除节点_C ++程序查找具有N个节点的BST数量(加泰罗尼亚编号)

bst 删除节点Problem statement: C program to find number of binary search trees with n nodes. 问题陈述&#xff1a; C 程序查找具有n个节点的二进制搜索树的数量。 Input format: single integer n 输入格式&#xff1a;单整数n Constraints: 0<n<15 约束&#x…

android intent实验,Android开发课程实验报告③ intent的使用

Android开发课程实验报告author&#xff1a;065实验四&#xff1a;intent实验报告目录实验目的初学移动应用公开发中的Android开发&#xff0c;实验四的主要内容为intent的使用&#xff0c;通过这一次实验&#xff0c;掌握基本的intent使用方法。具体实验分析实验第一步&#x…

利用xor给shellcode加壳

首先看我们的shellcode&#xff0c;执行弹出cmd 没有shellcode&#xff1a; #include "stdio.h" #include "windows.h" #include <string.h> #include "stdlib.h"int main(int argc, char* argv[]) {printf("begin\n");HINSTAN…

华为mate50鸿蒙,华为Mate50Pro首次曝光,5000mAh+鸿蒙OS+120Hz,太强

自从去年九月份以来&#xff0c;关于华为旗舰的消息越来越少了&#xff0c;主要的原因想必大家也是知道的。现在华为究竟还能不能继续正常发布新旗舰&#xff0c;答案也很微妙&#xff0c;不过我们可以肯定的是&#xff0c;华为绝不会放弃手机业务&#xff0c;这是余承东多次亲…

数数小木块

描述 在墙角堆放着一堆完全相同的正方体小木块&#xff0c;如下图所示&#xff1a; 因为木块堆得实在是太有规律了&#xff0c;你只要知道它的层数就可以计算所有木块的数量了。 现在请你写个程序 给你任一堆木块的层数&#xff0c;求出这堆木块的数量. 输入 第一行是一个整…

信息安全主动攻击和被动攻击_信息安全中的主动和被动攻击 网络安全

信息安全主动攻击和被动攻击安全攻击 (Security Attacks) The attack in cryptography means that our data or sent messages or any kind of information is accessed by some anonymous user without our permission. An attack simply means to alter, destroy, implant or…

线性表---双链表

双链表是单链表的拓展&#xff0c;单链表结点中只有一个指向其后继的指针&#xff0c;双链表有两个结点&#xff0c;一个指向其后继的指针&#xff0c;另一个指向前驱。 为什么要引入双链表呢&#xff1f; 这就要说单链表只有一个指针了&#xff0c;使得单链表只能从结点依次顺…

ppt形状html,PPT如何才能高大上?“形状”在PPT有这些妙用

【PConline 技巧】在PPT中&#xff0c;形状的用法非常丰富。可以说一份优秀的PPT&#xff0c;随处都能见到形状的影子。今天我们就和大家分享几组形状的特殊用法。其实很多时候&#xff0c;你会发现形状有时并不仅仅是形状&#xff01;1.突出标题标题在PPT中的作用不言而喻&…

二分图匹配----匈牙利算法之二

poj 1469 COURSES//题意:现在有p门课程和n个学生,现在需要有由p个学生组成的组织,该组织满足每个学生代表一门课程以及每门课程只能由一个学生代表,//现给出每门课程都有哪些学生可以参加,要求判断是否存在满足题意所需要的组织.//求解二分图的最大匹配数,如果与p相等就输出&qu…