vlambda博客
学习文章列表

[C语言]数据类型 基础知识


数据类型

1.基本数据类型

编译器要处理数据  那么就需要知道数据的存储大小和存储方式(即数据类型)

常用的四种基本数据类型 char int float double

  • 整型 int

  1. 存放整数的类型 占4个字节 范围-2^31~2^31-1

  2. int   (integer) 整数

  3. 存放0,1,2,3,4这种整数(不能带小数)


   int 存放整数(可正可负)  4个字节 short (int) 2个字节 long (int) 4个字节   long long (int)       8个字节


  • 浮点型 float/double

  1. float 单精度浮点型 4个字节 精确到小数点后面6~7位 存放数据范围 -3.410^(-38)~3.410^(38)

  2. double 双精度浮点型 8个字节 可以精确到小数点后面16~17位    -1.710^(-308)~1.710^(308)

  • 字符类型 char

  1. 存放字符类型 大小一个字节,字符要用  单引号括起来  和数字区分

  2. 本质上是整数类型 可以存放-128~127范围内的整数 ,0~127范围的整数 每个整数都用来对应一个字符,这个整数就称之为这个字符的ASCII码(对应关系可以参考ASCII码表)

  3. 使用的时候 使用字符和使用他的ASCII都可以

  4. 实质上char  -128~127    

  • 基本数据类型总结

  1. 数据的存储大小




short int long long long float double
16 1 2 2 4 8 4 8
32 1 2 4 4 8 4 8
64 1 2 4 8 8 4 8


  1. float和double的区别

double存放范围大 精度高 float占用内存小 运算速度快

精度要求高或者存放数据大用double 不然用float

2. 命名方式

  • 命名规定

  1. 必须由字母数字 下划线 美元符号组成

  2. 不可以是数字开头

  3. 有些标识符被系统使用了,因此在定义标识符的时候不能和系统的标识符(关键字)重复

  4. 了解C语言32个关键字

  • 常用的命名规则

  1. -----驼峰命名法

     特点 多个单词组合 除第一个单词外每个单词的首字母大写(也称小驼峰)
        示例 iPadMini   mciSendSrting
  2. -----帕斯卡命名法

     特点:每一个单词的首字母大写 其余小写(也称大驼峰)
         示例FirstName OuGuang
  3. -----匈牙利命名法

     开头字母用变量类型的缩写 其余部分用变量的英文或者英文缩写,单词首字母大写
         示例 iMyAge  cMyName fManHeight
  4. 全大写    常量

         #define PI 3.1415926
  5. _t    一般是别名

         size_t
         time_t

3.定义变量

定义变量的格式是  类型  变量名

  • 类型比如上面说过的int double, 变量名可以自取

         int a;//定义一个整型变量a
  • 定义变量的时候可以用给他赋值  (初始化)


 /****初始化****/ char ch=‘A’;//字符要加单引号’ ‘ /****赋值****/ char ch; ch=65;//字符类型可以直接使用ASCII码(这个是数字 不要加单引号)


4.输入输出

  • 输入或者输出变量

  1. scanf   获取用户输入的数据  将数据存放在变量中    scanf("格式占位符",&变量)

  2. printf   输出字符串或格式输出数据   printf("字符串");    printf("格式占位符1,格式占位符2",变量1,变量2);


#include<stdio.h>int main(){ /********整型*********/ int y;//准备变量 printf("请输入一个整型"); scanf("%d", &y);// 注意 scanf 要取地址 & printf("用户输入的内容是%d\n", y); /********字符型********/ char ch; printf("请输入一个字符"); scanf("%c", &ch); printf("用户输入的内容是%c\n", ch); /********单精度浮点型*********/ float a; printf("请输入一个float型"); scanf("%f", &a); printf("用户输入的内容是%f\n", a); /********双精度浮点型*********/ int b; printf("请输入一个double型"); scanf("%lf", &b); printf("用户输入的内容是%lf\n", y); return 0; }


  • 格式占位符说明


%d 输入或者输出一个int
%c 输入或者输出一个char
%f 输入或者输出float
%lf 输入或者输出一个double


对于%f %lf 在输出的时候是一样的 默认打印6位小数


#include<stdio.h>int main(){   double a = 1; float b = 1;    printf("float:%lf,double:%f\n", a, b); return 0;}



打印结果:float:1.000000,double:1.000000

  • 输出控制

除了基本的输出之外,printf还提供了一系列输出控制,以便使输出的内容更加整齐正式

完整的printf 格式  %[标志] [宽度] [.精度]type

最小宽度控制

printf(“%4d”,3);

%4d中的4表示 最少输出4位,像后面的3只有一位数字,那么不够的部分将用空格补齐

下面的代码中给了一长串的*以显示补齐的空格,可以很明显看出他在前面补齐了三个空格凑成4位


#include<stdio.h>int main(){ printf("****%4d******\n",3); printf("**************"); return 0;}


输出结果:

 ****   3******
 **************

精度控制

所谓精度控制其实就是控制小数位数,用%f或者%lf输出的浮点型默认输出6位小数,如果想要输出更多或者更少的小数位数,则可以使用精度控制

%.16f   打印的时候 打印16位小数


#include<stdio.h>int main(){   double a = 1;   float b = 1;   printf("float:%.16lf,double:%.16f\n", a, b);   return 0;}


打印结果:float:1.0000000000000000,double:1.0000000000000000

标记

左对齐(默认为右对齐)


#include<stdio.h>int main(){     //默认右对齐     printf("****%4d******\n"3); printf("**************\n"); //左对齐 printf("****%-4d******\n", 3); printf("**************\n"); return 0; }


输出结果:

    ****   3******
    **************
    ****3   ******
    **************
  1. 输出符号

    在用%o输出八进制的时候 在八进制前面补一个0

    在用%x输出16进制的时候 在16进制前面补一个0x

  • 其他不常格式占用符

  %hd  short
  %ld long
  %lld long long
  %x  16进制整型 
  %o   8进制整型
  %u  无符号整型
  %s  字符串
  %p  地址

(注:文章转载于网络文章+个人补充)