C基础
文章平均质量分 51
liuyangstudy
这个作者很懒,什么都没留下…
展开
-
运行环境大小端测试
所谓大端机,小端机,主要是根据机器对长字节的数字存储方式的特点大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部原创 2015-10-02 14:18:14 · 394 阅读 · 0 评论 -
C语言编程需要注意的64位和32机器的区别
一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:16位平台char 1个字节8位short 2个字节16位int 2个字节16位long 4个字节32位指针 2个字节32位平台转载 2015-09-30 21:22:52 · 479 阅读 · 0 评论 -
C语言结构体内存对齐问题
结构体在存储时,如果没有特别设置,会默认以结构体成员中,占用字节最大的成员为单位开辟内存,如下面程序#include using namespace std;//#pragma pack(1)struct CAT_s{int ID;char Color;char test;char test1;//char test2;unsigned shor原创 2015-10-02 13:52:49 · 865 阅读 · 0 评论 -
char 型 127+1后的结果
首先,说下结论,这里由于各种平台的规定不同,对char的默认类型可能不同(unsigned和signed), 所以也有人认为结果不能确定。这里主要要说的是PC上常见的把char默认为signed char的情况,如VS中,运行一遍你会发现结果是-128.但是8位的signed char型,除去符号位1位,如何表示-128,这里计算机把它拓展成16位,最后再截断取后8位。-128 原码 1转载 2015-10-09 11:19:53 · 3360 阅读 · 0 评论 -
C语言中参数执行顺序及a++与++a实现的区别
首先结论:(1)void func(int a, int b, int c, int d)中参数按dcba,即从右至左的顺序依次入栈。 (2)printf("%d, %d\n",(a++)*a,a+=2)中从右至左依次计算。 即使(1)(2)情况下,参数都是从右到左的依次被执行。 (3)a++先使用a的值再自增,产生临时变量,++a先自增再使用新的a的值,不产生临时变量。原创 2015-10-11 21:42:09 · 3031 阅读 · 0 评论 -
指针的怨念
#include using namespace std;struct S{ int i; int *p;};void main(){ S s; int *p = &s.i; /*指针p存储了s.i的地址*/ p[0] = 4; /* s.i的地址上存储的值为4,即i =4*/ p[1] = 3; /* p+1的地址即是s.p,这里是在s.p中存入了地址3*/ c原创 2015-10-15 22:12:20 · 395 阅读 · 0 评论