Error[8]: Undefined offset: 489, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

目录

一. 数据类型分类

二. 基本数据类型
#include 

int main(int argc, char *argv[])
{
	printf("%lu %lu %lu %lu\n", sizeof(_Bool), sizeof(char), sizeof(short), sizeof(int));
	return 0;
}

返回1 1 2 4

vi /usr/include/limits.h 
1. 布尔型 bool

其中对于布尔型需要引入头文件,如果不想引用头文件可以用_Bool作为基本类型,但缺点是truefalse没有被定义。这被定义在头文件内。

#include 
#include 

int main(int argc, char *argv[])
{
	bool a, b, c;
	a = true; // true
	b = false // false
	c = -1; // true
}
2. 字符型 char
类型名称长度(字节)值域
char1-128 ~ 127 或 0 ~ 255
signed char1-128 ~ 127
unsigned char10 ~ 255

signed char来说最高位位符号位0表示正,1表示负,对正数来说可以表述 2 7 − 1 2^7-1 271个数。
对负数来说先复习以下补码。计算机中负数用补码表示

数字原码反码补码
-1100000011111111011111111
-12711111111100000001000001
-1281000000
#include 

int main(int argc, char *argv[])
{
	char ch = 65;
	printf("ch=%d %c\n", ch, ch);
	return 0;
}

返回

ch=65 A
3. short,long,long long类型
类型名称长度(字节)值域
short (signed short)2-32768~32767
unsigned short20~65535
long4
long long8
4. int类型
类型名称长度(字节)值域
int (signed int)4-2147483648~2147483647
unsigned int40~4294967295
#include 

int main(){
	int a = 0x12345678;
	printf("%d %x %o\n", a, a, a) //打印十进制,十六进制,八进制
}
三. 基本数据类型的常量

常量指在程序运行期间其数值不发生变化的数据

1. 整型常量

整数可以是十进制数、八进制数和十六进制数

2. 浮点常量

可以结合Java-常亮与变量-学习笔记02来学习

3. 字符常量

通常指单一字符,用单引号括起来。
一些规律

char a, b, c, d, e;
int x;
a = 'F'; //将70给a
b = 'A'+2 // C
c = ' ' + 'B' // b
d = 'b' - 32 // B
e = '0';
x = e-48 // 整数 0
4. 字符串常量
char arr1[] = {"abc"};
char arr2[] = {'a', 'b', 'c', '}';// arr1 == arr2 #
5. 标识常量
define< <表示常量名称> #常量>
definePI 3.1415 #

通过下面的程序可以发现宏与正常的计算不同,宏是原样替代,而不是计算!

include# 
define ONE 1 #
define TWO + ONE int ONE

main (int, argcchar * [argv])int
{
	= a 10 ,= b 20 ,; c=
	c + ONE * TWO + b ; a//计算结果是1+1+1*20+10=32 而不是 1+2*20+10=51 }
gcc -E define.c -o define.i
 

在终端输入

define.i

打开c = 1 + 1 + 1 * b + a;,文件最后显示如下,可以看到5

# "deine.c" int
main (int, argcchar * [argv])int
{
  = a 10 ,= b 20 ,; c=
  c 1 + 1 + 1 * + b ; a}

    
     
      
       
        1
       
       
        +
       
       
        2
       
       
        ∗
       
       
        20
       
       
        +
       
       
        10
       
       
        =
       
       
        51
       
      
      
       1+2*20+10=51
      
     
    

如果想算出1+220+10=51#这个结果需要做一些更改

include# 
define ONE 1 #
define TWO ( +ONE ) ONE//需要加括号 int

main (int, argcchar * [argv])int
{
	= a 10 ,= b 20 ,; c=
	c + ONE * TWO + b ; a} 
  • 由字母、数字、下划线组成,不能以数字开头,不能和关键字重名
  • 四. 变量 1. 变量的基础 2. 变量的声明与储存类型(auto, register, static, extern) )
    File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
    File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
    File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
    C语言-数据类型、常量、变量及运算符-学习笔记02_C_内存溢出

    C语言-数据类型、常量、变量及运算符-学习笔记02

    C语言-数据类型、常量、变量及运算符-学习笔记02,第1张

    目录
    • 一. 数据类型分类
    • 二. 基本数据类型
      • 1. 布尔型 bool
      • 2. 字符型 char
      • 3. short,long,long long类型
      • 4. int类型
    • 三. 基本数据类型的常量
      • 1. 整型常量
      • 2. 浮点常量
      • 3. 字符常量
      • 4. 字符串常量
      • 5. 标识常量
    • 四. 变量
      • 1. 变量的基础
      • 2. 变量的声明与储存类型(auto, register, static, extern)

    一. 数据类型分类

    二. 基本数据类型
    • 我们可以通过sizeof来确定字节长度
    #include 
    
    int main(int argc, char *argv[])
    {
    	printf("%lu %lu %lu %lu\n", sizeof(_Bool), sizeof(char), sizeof(short), sizeof(int));
    	return 0;
    }
    

    返回1 1 2 4

    • 判断数字是否越界可以看limits.h这个头文件,可以在这个文件里看到每个数据类型的最大与最小取值
    vi /usr/include/limits.h 
    
    1. 布尔型 bool

    其中对于布尔型需要引入头文件,如果不想引用头文件可以用_Bool作为基本类型,但缺点是truefalse没有被定义。这被定义在头文件内。

    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
    	bool a, b, c;
    	a = true; // true
    	b = false // false
    	c = -1; // true
    }
    
    2. 字符型 char
    • char的取值范围及其编码
    类型名称长度(字节)值域
    char1-128 ~ 127 或 0 ~ 255
    signed char1-128 ~ 127
    unsigned char10 ~ 255

    signed char来说最高位位符号位0表示正,1表示负,对正数来说可以表述 2 7 − 1 2^7-1 271个数。
    对负数来说先复习以下补码。计算机中负数用补码表示

    数字原码反码补码
    -1100000011111111011111111
    -12711111111100000001000001
    -1281000000
    • char是字符型但同时也能表示整数
    #include 
    
    int main(int argc, char *argv[])
    {
    	char ch = 65;
    	printf("ch=%d %c\n", ch, ch);
    	return 0;
    }
    

    返回

    ch=65 A
    
    • 如果让ch=128超出了最大值127,其编码会是10000000也就是上表中的-128,因此会返回ch=-128
    • 如果用unsigned,也就是unsigned char ch=-1超出了最小值0,其编码会是11111111也就是上表中的最大值255,因此会返回ch=255
    3. short,long,long long类型
    类型名称长度(字节)值域
    short (signed short)2-32768~32767
    unsigned short20~65535
    long4
    long long8
    4. int类型
    类型名称长度(字节)值域
    int (signed int)4-2147483648~2147483647
    unsigned int40~4294967295
    #include 
    
    int main(){
    	int a = 0x12345678;
    	printf("%d %x %o\n", a, a, a) //打印十进制,十六进制,八进制
    }
    
    三. 基本数据类型的常量

    常量指在程序运行期间其数值不发生变化的数据

    1. 整型常量

    整数可以是十进制数、八进制数和十六进制数

    • 八进制数:01234(八进制一个数代表3个二进制位)
    • 十六进制数:0xd1c(十六进制一个数代表4个二进制位)
    2. 浮点常量
    • 浮点常量又称为实数,一般含有小数部分
    • 在C语言中,实数只有十进制的实数,分为单精度与双精度。
    • 实数的表现方法有两种,即一般形式和指数形式
      • 一般形式:1.1,1.2
      • 指数形式:1.176e+10

    可以结合Java-常亮与变量-学习笔记02来学习

    3. 字符常量

    通常指单一字符,用单引号括起来。
    一些规律

    char a, b, c, d, e;
    int x;
    a = 'F'; //将70给a
    b = 'A'+2 // C
    c = ' ' + 'B' // b
    d = 'b' - 32 // B
    e = '0';
    x = e-48 // 整数 0
    
    4. 字符串常量
    • 用双引号括起来。
    • 字符串是以'0'结尾的
      需要注意的是‘9'不等于"9"因为"9"隐含'0'
    char arr1[] = {"abc"};
    char arr2[] = {'a', 'b', 'c', '}';// arr1 == arr2 #
    
    5. 标识常量
    define< <表示常量名称> #常量>
    definePI 3.1415 #
    

    通过下面的程序可以发现宏与正常的计算不同,宏是原样替代,而不是计算!

    include# 
    define ONE 1 #
    define TWO + ONE int ONE
    
    main (int, argcchar * [argv])int
    {
    	= a 10 ,= b 20 ,; c=
    	c + ONE * TWO + b ; a//计算结果是1+1+1*20+10=32 而不是 1+2*20+10=51 }
    gcc -E define.c -o define.i
     
    

    在终端输入

    define.i

    打开c = 1 + 1 + 1 * b + a;,文件最后显示如下,可以看到5

    # "deine.c" int
    main (int, argcchar * [argv])int
    {
      = a 10 ,= b 20 ,; c=
      c 1 + 1 + 1 * + b ; a}
    
        
         
          
           
            1
           
           
            +
           
           
            2
           
           
            ∗
           
           
            20
           
           
            +
           
           
            10
           
           
            =
           
           
            51
           
          
          
           1+2*20+10=51
          
         
        
    

    如果想算出1+220+10=51#这个结果需要做一些更改

    include# 
    define ONE 1 #
    define TWO ( +ONE ) ONE//需要加括号 int
    
    main (int, argcchar * [argv])int
    {
    	= a 10 ,= b 20 ,; c=
    	c + ONE * TWO + b ; a} 
    
  • 由字母、数字、下划线组成,不能以数字开头,不能和关键字重名
  • 四. 变量 1. 变量的基础
    • 变量占据存储空间的大小由其数据类型决定
    • 变量在内存空间中的首地址为变量的地址
    • auto int i;
    2. 变量的声明与储存类型(auto, register, static, extern)
    • 变量说明的一般形式是:<存储类型> <数据类型> <变量名>
    • 一般<存储类型>默认缺省,存储类型有四种
      • auto:声明的是局部变量最常用(默认随机值)int i;
      • 必须是cpu能够接收的类型,比如说32位的计算机,大于32位的数据就存不了
      • 一样
      • register:寄存器型,申请将变量放入CPU的寄存器中,以加快程序运行速度,若申请不到同auto
          &
        • 不能用
        • 在内存中以固定的地址存放,而不是以堆栈形式存放的
        • 取地址
      • static:静态存储类型,可以是全局也可以是局部变量(全局变量默认为0)
        • 只要程序没有结束就不会随着程序段的结束二小时,下次调用还会保留上次调用结果
        • int
          = i1;while
          ( <i5)static{
          	int ; a//默认为0 ++
          	aprintf
          	("a=%d\n",) a;++
          	i}
          a = 1
        a = 2
        a = 3
        a = 4
        
        
        return
        extern_static1.c
      • extern:当变量在一个文件中的函数体外说明,所有其他文件中的函数或程序段都可以引用这个变量
        • 定义两个文件extern_static2.cextern_static1.c
        1. int
          = global_a 100 ;exterm_static2.c
          
          #
          includeextern 
          ; in global_a//这里需要申明  int
          main (int, argcchar * [argv])printf
          {
          	("global_a"=%,d\n") global_a;return
          	0 ;}
          gcc extern_static1.c extern_static2.c
          
          
          编译的时候需要将两个文件都放在一起用
          extern_static1.c
        2. static,用了static再从外部调用就会报错
          int = global_a 100 ;
          

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/langs/914895.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-16
    下一篇 2022-05-16

    发表评论

    登录后才能评论

    评论列表(0条)

    保存