C语言(第二天)

数据类型

在学习编程语言,无非就是用于人机交互,那么人机交互的数据就需要区分数据类型,数据类型的出现方便了数字型数据的运算,字符型数据的合并等等。学习一门编程语言,数据类型是无法绕开的环节。

int

int用于声明整数型变量,int型的存储占用2或者4个字节。

  • 声明变量
    1>int p1,p2,p3;与int p1;int p2;int p3;相同
  • 赋值
    1>p1=123;
    2>通过函数scanf()赋值
    3>初始化变量 int p0=123;
  • 输出变量值
    通过printf()函数,借助%d来进行输出。%d同时用来指出变量值打印出的位置。%d用来输出十进制,%o用来输出八进制,%x用来输出十六进制。如下给出示例:
#include <stdio.h>
int main(void){
    int sev,eight,ten;
    sev=7;
    eight=8;
    ten=10;
    printf("%d is your one,%d is your two,%d is your three.\n",sev,eight-sev,ten-sev);
    //第一个是变量eight值,第二个是内存中的任意值。
    printf("%d is test number,%d wonderful.",eight);
}
  • 溢出现象
    发生溢出时,系统不会出现错误提示,但是有的编译器会给出警告,这里给出详细示例,请大家在编写代码时注意一些。
#include<stdio.h>
int main(void){
    int test_num=1000000000000;
    printf("%d is test,%d is test one,%d is test two.",test_num,test_num+1,test_num+2);
}

溢出现象

char

char类型占用一个字节,用于存储字符,但在计算机底层依然存储的是整数,在学习C的时候大家可能都会接触到ASCII码,ASCII码便体现这一原理。

#include<stdio.h>
int main(void){
    char test_word='A';
    printf("%c is first char.\n",test_word);
    test_word=test_word+1;
    printf("%c is second char.",test_word);
}

char字符结果

在声明变量和赋值方面与整数型类似,但需要注意一点,便是字符需要单引号(‘’)包含,不能用其他符号引用。

Bool

Bool类型表示的是布尔值,即逻辑值为true和false。在编程式大家也会发现用1也可以表示true,0表示false。从这一点可以看出Bool实际上依然是整数类型。

可移植类型

可移植类型主要用于防止程序在不同系统运行时,有的数据类型名功能不一样。C语言主要提供了两个函数库(stdint.h和inttypes.h)用来实现可移植类型。

  • 头文件:stdint.h
#include <stdio.h>
#include <stdint.h>
int main(void){

    int8_t test_8;
    test_8=127;

    printf("test_8 = %d",test_8);

    return 0;
}
  • 头文件:inttypes.h
#include <stdio.h>
#include <inttypes.h>
int main(void){
    int32_t test_32;
    test_32=658795;
    printf("test_32 is %d .\n",test_32);
    //PRId32 是该头文件对输出变量所用的占位符的=,该占位符主要用于防止不同系统对32位数字所需占位符不同的情况(%d或者%ld)。
    printf("test_32 is % "PRId32" .",test_32);
}

浮点型

  • float
    float类型必须至少能表示六位有效数字。
  • double
    double类型必须至少能表示十三位有效数字。
  • long double
    比double类型精度更高。
  1. 声明浮点型变量方式
    float test_1,test_2;
    double test_3;
    float test_4=3.3e-12;(e左右不能有空格)
    long double test_5;
  2. 浮点型常量(形式如下)
    -1.3e-12相当于 -1.310^(-12)
    13.23
    .3e12相当于0.3
    10^12
    2e12相当于2*10^12
    .2相当于0.2
    200
  3. 浮点值上溢和下溢
    浮点值上溢时,C语言会输出该值为INF。例子如下:
#include <stdio.h>
int main(void){
    float test_out = 3.4E38 * 100.0f;
    printf("%e\n", test_out);
}

溢出
浮点值下溢是指浮点值所有位数进行后移,缩小。

  1. 浮点数舍入错误
    当大家在用浮点数进行加减运算时,由于有效位数的限制可能出现舍入错误。下边依然是个例子:
#include<stdio.h>
int main(void){
    float test_4or5_0=3.0e23;
    float test_4or5_1=test_4or5_0+1.0;
    float test_4or5_2=test_4or5_1-test_4or5_0;

    printf("test_4or5_0 is %f \n",test_4or5_0);
    printf("test_4or5_1 is %f \n",test_4or5_1);
    printf("test_4or5_2 is %f",test_4or5_2);
}

四舍五入

其他类型

当然还有一些类型博主不在这里叙述,但C语言没有字符串类型也希望大家可以记住这一点。

获取类型字节大小

若大家无法判定数据类型字节大小,那么大家可以根据sizeof()函数来获取相应数据类型的所占字节大小。代码示例如下:

#include <stdio.h>
int main(void){
    printf("Type int is %d bytes \n",sizeof(int));
    printf("Type char is %d bytes \n",sizeof(char));
    printf("Type double is %d bytes \n",sizeof(double));
    printf("Type float is %d bytes \n",sizeof(float));
}

类型大小

小问题

C语言在变量赋值,数据输出时等多种地方,会出现数据与类型不匹配的问题,但编译器不会出现错误,且可以正常运行。示例如下:

#include <stdio.h>
int main(void){
    int i_test =12.56;
    float f_test =11.56;

    printf("%d \n",i_test);
    print=f("%d",f_test);
}

小问题

转义字符

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了

转移字符,是大家在输出数据时想要添加一些特定且无法使用基本的符号来表示,就如在输出中的换行符,大家肯定不能直接按enter键来解决,这便是转移字符的功能。如下便是示例:

#include <stdio.h>
int main(void){
    /*
      测试转义字符
    */
   float salary;
   printf("\a Please liscen di:");
   printf("$____ \b\b\b\b\b");
   scanf("%f",&salary);
   printf("\n\t enter and alt.%f",salary);

   printf("\r Yes");
}

转义字符
上述转移字符解释:

转义符号解释
\b退格,将当前位置移到前一列
\n换行
\ttab键
\r回车,将当前位置移到本行开头

总结

该篇主要用于了解C语言,总结有误的地方希望大家能够指正,有缺少的地方也希望大家指出,感觉还行的话请给个赞,给博主一点点鼓励。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lveson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值