![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
WeiBaoGang
这个作者很懒,什么都没留下…
展开
-
循环下scanf只读取第一个输入问题
今天在linux下使用scanf读入数据时,出现读入错误问题,每次都是第一次循环正常,第二次循环读数出错,scanf返回值为0,表明未成功读入一个数据;知道是输入缓冲区没清空,但是不知道gcc下ffush是无效的!!!!!后来从用下面的语句清空缓冲区后一切正常int c; while ((c=getchar()) != '\n' && c != EOF);...原创 2019-10-18 19:11:42 · 1692 阅读 · 0 评论 -
常见数据类型字节数
32位编译器:char :1个字节 char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)short : 2个字节 int: 4个字节 float: 4个字节 double: 8个字节 64位编译器:char :1个字节 char*(即指针变量): 8个字节 short : 2个字节原创 2017-09-08 20:50:49 · 1034 阅读 · 0 评论 -
结构体之位域
转载自:http://www.cnblogs.com/bigrabbit/archive/2012/09/20/2695543.html有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位转载 2017-10-07 17:05:57 · 1588 阅读 · 0 评论 -
C++内存对齐
转载自:http://www.cnblogs.com/xylc/p/3780907.html一,什么是内存对齐?内存对齐用来做什么?所谓内存对齐,是为了让内存存取更有效率而采用的一种编译阶段优化内存存取的手段。比如对于int x;(这里假设sizeof(int)==4),因为cpu对内存的读取操作是对齐的,如果x的地址不是4的倍数,那么读取这个x,需要读取两次共8个字节,然后还要将其拼转载 2017-10-08 11:23:39 · 236 阅读 · 0 评论 -
C++结构体中的位域
结构体的存储方式存在内存对齐问题,在本文中不展开讨论,本文主要想说明两个问题,第一个是位域的赋值问题;还有一个就是数据的表达形式。好了,现在我们先讨论一下位域的赋值问题;现假设有如下结构体struct byte{ int one:2; int two:1;};首先我们知道,one和two存储在同一个字节中,所以我们本能的以为语句struct byte原创 2017-10-12 14:43:12 · 2508 阅读 · 2 评论 -
C++巧妙程序
1、计算某个数的二进制中0和1的个数int num_zero = 0, num_one = 0, test = 2013; while (test + 1) { num_zero++; test = test | test + 1; } test = 2013; while (test ) { num_one++; test = test&test - 1; }原创 2017-10-14 10:42:10 · 402 阅读 · 0 评论