目录

定义变量

1、整型 int  、long int、long long int

2、字符型和字符串型 char

3、浮点型 float double

定义常量

局部变量和全局变量

混合运算

重要类型转换的问题

隐式转换:

强制类型转换:

sizeof运算符​​​​​​​


定义变量

在C语言里,bool型是在C99以后才有的类型,只能在c99以后的版本才可以使用,而且要使用bool型的话,必须添加头文件:   #include <stdbool.h>

数据类型从小到大:

bool,short,int,long,float,double,char

1、整型 int  、long int、long long int

整数类型的值都是整数。整数类型分为有符号型和无符号型。

int a,b;//声明两个个整型int(4B)变量,名为a,b
a= 5;//初始化
b = a + 5;
int c =15;//定义同时赋值
printf("%d,%d,%d\n",a,b,c);//1.输出整型变
//输出结果:5,10,15

2、字符型和字符串型 char

char用于字符数据的处理。

字符由单引号括起来,字符串由双引号括起来。
        字符只能是单个字符,字符串则可以含一个或多个字符。
        可以把一个字符型数据赋予一个字符变量,但不能把一个字符串赋予一个字符变量。
        '7'是一个字符型常量,"7"是一个字符串型常量,7是一个数字

字符:

char a = 'c';//注意这里需要是单引号
char ret = 98;//当输出选择%c时97会自动转换
printf("%c,%c\n",a,ret);//输出字符型变量
printf("%d\n",a);//如果选择是%d形式输出,会自动根据ASCII码进行转换
//输出结果:
c b
99
char b = 'a';
b = b - 32;
printf("%c\n",b);
//输出结果:A

字符串:

在C语言里没有字符串变量,只有字符串常量;要进行字符串运算,则需要借助数组进行运算。

一个字符占1B,但是"CHINA"不是占5B,而是占6B;因为存储为​​​​​​​

C H I N A \0

\0表示此字符串结束

3、浮点型 float double

浮点类型的值则有可能还有小数部分。

float打印输出默认小数点6位

带e是指数级,3e-3是3*10^-3,即0.00300

double 和long double提供了更大的取值范围和比float类型更高的精度。

定义常量

推荐define定义      
#define PI 数值    
一定要注意,这里没有分号结尾,而且define后面要定义的常量一定是大写

#include <stdio.h>
#define PI 3    //定义常量int main()
{printf("%d",PI);//输出常变量return 0;
}
//输出结果:3

局部变量和全局变量

局部变量的存储期限和函数有关,函数返回时收回分配

静态局部变量:使用static来在函数内定义,但不像自动变量(被调用时就存在,退出函数时就消失)那样,静态局部变量始终存在着,也就是它的生存其目的为整个源程序。但是静态局部变量的作用域为定义它的内部。

外部变量(全局变量):声明是在任何函数体外的。和静态局部变量一样,始终存在着。作用域是文件作用域,跟随在全局变量声明之后的所有函数都可以访问(修改)它。

混合运算

整型数进行除法运算时,如果运算结果为小数,那么存储浮点数时一定要进行强制类型转换。需要注意换算前后大小的问题,小心发生溢出,从而导致出错。

#include <stdio.h>
#include<stdlib.h>
//混合运算,从长字节到短字节数据需要强制类型转换int main()
{ int i =5;float f,g,h;short m;long I = 5;f = i / 2;   //和下面g对i进行强制类型转换进行对比,有/和//之分的是pythonh = i / 2.0;g = (float)i/2;m = (short)I/2;printf("i=%d,f=%f,g=%f,m=%d\n",i,f,g,m);printf("%0.9f,%0.9lf\n",h,h);//小数点后保留9位,此时double和float是一样的结果return 0;
}  //输出结果:i=5,f=2.000000,h=2.500000,g=2.500000,m=22.500000000,2.500000000

重要类型转换的问题

隐式转换:

可以将低级的转换为高级的。例如:short  int→ int

强制类型转换:

[强制转换表达式]        (类型名)表达式

这里括号里的类型名是要转换成的类型名。

void decompose (double x, long *int_part, double *fract_part)
{*int_part = (long) x;*fract_part = x - *int_part;
}

sizeof运算符

是一种特殊的运算符,用来计算一种类型需要的存储空间的大小。

表达式:sizeof(类型名)。其值是一个无符号整数,代表存储属于类型名的值所需要的字节数。所以sizeof(float)是一个整数表达式。

sizeof(char) = 1.只要是char类型的变量,sizeof()都等于1.

在32位上,sizeof(int)=4,

#include <stdio.h>int main()
{int a=100;int arr[10] ={1,2,3};char str[]="hello world";int len_a = sizeof(a);int len_arr = sizeof(arr);int len_str = sizeof(str);printf("len_a=%d,len_arr=%d,len_str=%d\n",len_a,len_arr,len_str);return 0;
}
/*当初始化a = 10;    int arr[10] ={1,2,3};  char str[]="hello";时输出为:len_a=4, len_arr=40, len_str=6当初始化a = 100;    int arr[10] ={1,2,3,4};  char str[]="hello world";时输出为:len_a=4,len_arr=40,len_str=12当初始化a = 100;    int arr[5] ={1,2,3};  char str[]="hello world";时输出为:输出为:len_a=4,    len_arr=20,    len_str=12*/

因此,我认为

一个int型占4个字节,sizeof(int型变量) = 4;

第一个是一个int型数据,所以占据4个字节。

第二个是一个数组里面有三个int型数据,所以是3*4=12个字节。

第三个是hello这是5个字节,但因为它被双引号括起来了,系统自动在末尾不了一个'\0' 这个也占一个字节,所以就是5+1=6个字节

#include<stdio.h>int main()
{int a = 10;char b = 'b';short c = 2;long d = 9;float e = 6.29f;double f = 95.0629;int arr[] = { 1,2,3 };char str[] = "hello";double *p=&f;int *i=&a;//分别对各个变量使用sizeof运算printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d,arr=%d,str=%d point_p=%d,point_i=%d\n",sizeof(a), sizeof(b), sizeof(c), sizeof(d), sizeof(e), sizeof(f),sizeof(arr), sizeof(str), sizeof(p), sizeof(i));return 0;
}//输出:a=4,b=1,c=2,d=8,e=4,f=8,arr=12,str=6 point_p=8,point_i=8
# include <stdio.h>
# include <string.h>int main()
{printf("sizeof(char): %d\n", sizeof(char));printf("sizeof(short): %d\n", sizeof(short));printf("sizeof(int): %d\n", sizeof(int));printf("sizeof(long): %d\n", sizeof(long));printf("sizeof(long long): %d\n", sizeof(long long));printf("sizeof(float): %d\n", sizeof(float));printf("sizeof(double): %d\n", sizeof(double));return 0;
}
/*输出结果:sizeof(char): 1sizeof(short): 2sizeof(int): 4sizeof(long): 4sizeof(long long): 8sizeof(float): 4sizeof(double): 8*/

​​​​​​​

类型 解释 对应占位符
byte 1B
float 浮点型,4B %f
double           浮点型,8B %lf
long double 浮点型,
boolean  布尔型,1B
char  字符型,1B %c
short 2B %hd
int     整型,  1B %d
long  int

长整型

在32位系统中,占4B
在64位系统中占8B
需要在数字后+l或L,建议L

%ld
long long int

C语言入门·定义变量及类型转换相关推荐

  1. 为什么c语言要定义变量,C语言为什么要规定对所用到的变量要“先定义,后使用”...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 int a=10; 以上一句话对变量a进行了声明,定义以及初始化 extern int a; 以上一句话仅仅对变量a进行了声明,将a的链接属性设置为ext ...

  2. c语言字节变量怎样定义,C语言之定义变量_wx5c99a1487a5ff的博客的技术博客_51CTO博客...

    基本格式数据类型,标识符 如:int num1,num2,......如需定义多个类型不同的变量,需分别定义标识符定义规则 标识符只能有数字,字母,下划线组成 标识符不能是C语言中定义的关键字,如in ...

  3. c语言 引用定义变量,如何在c语言中定义及引用全局变量?

    如何在c语言中定义及引用全局变量? 答案:5  信息版本:手机版 解决时间 2019-10-03 10:30 已解决 2019-10-02 15:19 如何在c语言中定义及引用全局变量? 最佳答案 2 ...

  4. c语言 枚举定义变量,C语言之枚举的定义以及测试

    #include /*   定义方法1:只定义枚举类型,不定义变量 enum week { SUN,        // SUN = 0 MON,        // MON = 1; TUE, WE ...

  5. C语言中定义变量位置

    C标准的问题 C89规定,在任何执行语句之前,在块的开头声明所有局部变量. 即应该如下:定义变量只能在最开始,scanf等执行语句之前 int N = 0;double sum = 0;scanf(& ...

  6. javascript语言,定义变量

    <body><script>//变量:内存中的一个空间,用于存储数据,数组的种类不一样,对空间的要求也不一样// var 是定义变量的关键字,定义变量的方式: var 变量名 ...

  7. C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...

    强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...

  8. c语言通过定义变量实现对,C语言中定义变量“#X”,X##, ##X 和“##X##”用意

    关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号.比如下面代码中的宏: 1. ...

  9. C语言入门之变量、常量、字符串、转义字符

    文章目录 变量 常量 字符串 转义字符 一.变量 1.变量的命名规则: 只能由字母(包括大写和小写).数字和下划线( _ )组成. 不能以数字开头. 长度不能超过63个字符. 变量名中区分大小写的. ...

最新文章

  1. 在webstorm里面添加自定义web browsers的方法
  2. 为什么说dubbo的声明式缓存不好用!!!
  3. 怎么使图表居中显示_【Excel技巧】制作柱形图图表完美呈现百分比,提升您的报表颜值...
  4. hibernate ——联合主键
  5. 一位跟我一样疑惑的同学~
  6. VS2012--应用程序无法正常启动0xc000007b 的错误
  7. Eloquent JavaScript 阅读笔记一
  8. vivado-Matlab联合仿真FIR滤波器
  9. 2019马哥python的百度网盘_马哥 2018 Python 全栈视频
  10. 最新腾讯防水墙滑块验证码破解,代码可以直接运行
  11. 论文笔记7 --(ReID)Video-based Person Re-identification via Self Paced Weighting
  12. Proteor将收购Freedom Innovations资产,以此扩大下肢义肢业务
  13. 异常解决java.lang.ClassNotFoundException: org.springframework.boot.actuate.endpoint.PublicMetrics
  14. pandas并发处理数据神器Pandarallel的实战代码
  15. 学以致用——Java源码——员工薪酬系统功能增强(Payroll System Modification)
  16. 运维面试题(面前准备)
  17. Signal TapII 软件的使用
  18. Vue按回车键进行搜索
  19. 东北大学acm暑期夏令营结构体
  20. 自考计算机数据库建立过程,上海自考 计算机 数据库 笔记.doc

热门文章

  1. RockBrain USB Server-云计算虚拟化USB设备集中管理、远程共享解决方案(银企直联)...
  2. 电路设计中电阻的选择及其作用
  3. 阿里、腾讯、百度大厂的程序员编程指南规范
  4. NTC温度传感器 (含arduino程序)(公式解算版)(终极)
  5. 使用商业智能分析系统进行同比、定比、环比分析
  6. c#与html的区别,C# 静态变量与普通变量的区别
  7. 浙江省计算机英语三级,关于2020年下半年浙江省高校计算机和大学外语三级考试报名的通知...
  8. 音乐满屋 sonos无线家庭音乐系统试用
  9. 配对交易之统计套利配对:协整(cointegration)
  10. sharding-JDBC源码分析(二)SQL解析