数据类型及长度

char        字符型,占用一个字节

int          整型,通常代表特定机器中整数的自然长度

short       16位

int         16位或32位

long       32位

各编译器可根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,long至少为32位,并且short类型不得长于int类型、int类型不得长于long类型。

float        单精度浮点型

double    双精度浮点型

signed与unsigned  用于限定char类型或任何整型。unsigned无符号,总是正值或0,并遵守算术模2n(n次方)定律,其中n是该类型占用的位数。如果char对象占用8位,那么unsiged char类型变量取值范围为0-255,而siged char类型取值范围则为-128-127。

31                  十进制  25-1

037                八进制

0x1F/0X1f      十六进制

31 = 32 - 1 = 25 – 1 = (24 +  23) + ( 22 + 21 + 20)= (24/8) + 7 = 037

           = 24 + (23 + 22 + 21 + 20)   = 16/16 + 15 = 0X1f

后缀L表示long类型,后缀U表示unsiged类型。0XFUL是一个unsiged long类型的常量,对应十进制数15。

一个字符常量是一个整数,用单引号括起,如’x’。字符在机器字符集中数值就是字符常量的值。例如,在ASCII字符集中,字符’O’的值是48。

“hello ””world”      等同 “hello world”

字符串的内部表示使用一个空字符“\0”作为串的结尾,因此,存储字符串的物理存储单元数比括在双引号中的字符数多一个。

枚举是一个常量整值的列表,例如:

enum Boolean{NO,YES};

在没有显式说明的情况下,enum类型中第一个枚举名的值为0,第二个为1,依此类推。

enum months{JAN=1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC};

FEB的值为2,MAR的值为3。

不同枚举中的名字必须互补相同,同一枚举中不同的名字可以具有相同的值。

相对于#define语句,enum的优势在于常量值可以自动生成。

声明

int lower,upper,step;

char c,line[1000]

int lower;

int upper;

int step;

char c;

char line[1000]             //此形式占用较多空间,但便于向各声明语句中添加注释。

声明变量时并初始化

char esc = ‘\\’;

int i = 0;

int limit = MAXLINE +1;

float eps = 1.0e-5;

如果变量不是自动变量,则只能进行一次初始化操作。

外部变量与静态变量将被初始化为0,未经显式初始化的自动变量的值为未定义值(即无效值)。

任何变量的声明都可以使用const限定符限定,该限定符指定变量的值不能被修改。对数组而言,const限定符指定数组所有元素的值都不能被修改。

const限定符也可配合数组参数使用,它表明函数不能修改数组元素的值。

#include <stdio.h>
#include <stdbool.h>
bool is_leap_year(int year); main(){
bool b1,b2;
b1 = is_leap_year(2000);
b2 = is_leap_year(2001);
printf("%d\n%d",b1,b2);  //1 0
return 0;
} bool is_leap_year(int year){
return (0 == year % 4 && 0 != year % 100) || 0 == year % 400 ? true : false;
}
#include <stdio.h>
int atoi(char s[]); //注意后面的分号 main(){
int i;
i = atoi("1999");
printf("%d",i);
return 0;
} /**一串数字转为相应的数值**/
int atoi(char s[]){
int i;
int n = 0;
for(i=0; s[i] >= '0' && s[i] <= '9'; i++){
n = 10 * n + (s[i] - '0');
}
return n;
}
#include <stdio.h>

int lower(int c){
return c >= 'A' && c <= 'Z' ? c + 'a' - 'A' : c;
} main(){
char unsigned s = 'A';
printf("%d",lower(s));
return 0;
}

注:将字符型转换为整型时,C语言没有指定char类型的变量的符号类型(signed或unsigned)。当一个char类型的值转换为int类型的值时,其结果,在某些机器中,如果char类型值的最左边一位是1,则转换为负整数(进行“符号扩展”),而在另一些机器中,左边可能添加0,值为正整数。

C语言的定义保证了机器的标准打印字符集中的字符不会是负值,因此,在表达式中这些字符正值。但是,在存储在字符变量中的位模式在某些机器中可能是负值,或正值。为保证程序的可移植性,如果要在char类型的变量中存储非字符数据,最好指定signed或unsigned限定符。

一天一点点。。。

重拾C,一天一点点的更多相关文章

  1. 重拾C,一天一点点_2

    类型转换一般来说,如果二元运算符的两个操作数具有不同的类型,较低的类型提升为较高类型,结果为较高类型.表达式由float类型的操作数不会自动转换为double类型.使用float类型主要是为了在使用较 ...

  2. 重拾C

    重拾C,一天一点点_10 来博客园今天刚好两年了,两年前开始学编程. 忙碌近两个月,项目昨天上线了,真心不容易,也不敢懈怠,接下来的问题会更多.这两天调试服务器,遇到不少麻烦. 刚出去溜达了一下,晚上 ...

  3. CSS魔法堂:重拾Border之——更广阔的遐想

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  4. CSS魔法堂:重拾Border之——不仅仅是圆角

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  5. CSS魔法堂:重拾Border之——图片作边框

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  6. CSS魔法堂:重拾Border之——解构Border

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  7. 重拾Blog

    上个月是我入职现在的公司三周年的月份,所以又续订了五年的合同,最近有一些思考,也不知道这个五年能否还会一直在这个公司工作. 一切随缘吧. 闲适有毒,忙碌的时光总是过的很快,自从加入这个公司以来,日常的 ...

  8. [linux]重拾linux

    起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使 ...

  9. 重拾qt

    最近公司又接了一个煤矿的项目,要写个小程序摘取数据,我是公司唯一c++程序员,本来搞ios搞好好的,现在又得重拾半年没摸得qt了.呵呵...呵呵呵. 这里只记录这次小程序的一些小的总结吧.. 1.中文 ...

随机推荐

  1. UITableView 的增删改 自定义UITableViewCell

    1.UITableView的增删改 //设置编辑模式 [self.tableView setEditing:YES animated:YES]; //可以不写 - (BOOL)tableView:(U ...

  2. 51nod 平均数(二分+树状数组)

    题目链接: 平均数 基准时间限制:4 秒 空间限制:131072 KB 分值: 80 LYK有一个长度为n的序列a. 他最近在研究平均数. 他甚至想知道所有区间的平均数,但是区间数目实在太多了. 为了 ...

  3. document.execCommand()命令小计

    2D-Position 允许通过拖曳移动绝对定位的对象. AbsolutePosition 设定元素的 position 属性为“absolute”(绝对). BackColor 设置或获取当前选中区 ...

  4. 【Mongodb】---关联表查询population

    Population MongoDB是非关联数据库.但是有时候我们还是想引用其它的文档.这就是population的用武之地. Population是从其它文档替换文档中的特定路径.我们可以迁移一个单 ...

  5. JavaScript--基本包装类型(13)

    // JS为了便于操作基本类型,提供了3个特殊的引用类型:Boolean/Number和String; 一 基本包装类型概述 // 实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装 ...

  6. 【转载】Android开发学习笔记:Intent的简介以及属性的详解

    http://liangruijun.blog.51cto.com/3061169/634411/ 一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent ...

  7. AspxGridView ComboBoxComlum列数据联动

    第1步: 页面放置AspxGridView控件, 设置列ComboBox1, ComboBox2列, 拟通过ComboBox1列更新联动ComboBox2列. 两个数据列均为"ComboBo ...

  8. Android-短信验证

    一.mob.com移动开发者服务平台(ShareSDK)的认识 该平台主要是致力于解决移动开发者的实际需求,同时也致力于一些第三方平台的框架支持,那么这样我们可以更方便的将一些功能集成到我们的App中 ...

  9. Android OpenGL ES(二)----平滑着色

    直线或者三角形上的每个片段混合后的颜色可以用一个varying生成.我们不仅能混合颜色,还可以给varying传递任何值,OpenGL会选择属于那条直线的两个值,或者属于那个三角形的三个值,并平滑地在 ...

  10. PHP static静态局部变量和静态全局变量总结

    1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它.倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值 2.静态局部变量只会初始化一次 3.静态属 ...