当前位置: 首页>编程语言>正文

C语言从基础 -> 精通 -> 底层 (2) 基本数据类型和变量和赋值

二.基本数据类型

C 语言包含的数据类型如下图所示:


C语言从基础 -> 精通 -> 底层 (2) 基本数据类型和变量和赋值,第1张
c语言基本数据类型

这张图大家肯定在很多教材中都见过,它包含了C语言中涉及的全部数据类型

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

注:可用 sizeof()是操作符 sizeof测量的实体大小为编译期间就已确定 获取
windows操作系统,32位机中:

  • char: 1个字节
  • short: 2个字节
  • int: 4个字节
  • long: 4个字节
  • float: 4个字节
  • double: 8个字节

windows操作系统,64位机中:

  • char: 1个字节
  • short: 2个字节
  • int: 4个字节
  • long: 8个字节
  • float: 4个字节
  • double: 8个字节

2.变量的定义

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

short a = 1;
long a = 10;
float a = 4.5f;
double a = 4.5;
string str = "ABCDEF";
int a;//定义一个整型变量a
定义变量的时候可以用给他赋值 
char ch=‘A’; //字符要加单引号’ ‘
//或者先定义然后赋值
char ch;
ch=65; //字符类型可以直接使用ASCII码(这个是数字 不要加单引号)

2.2变量的输入输出

#include<stdio.h>
 int main()
 {
  /********整型*********/
  int y;     //准备变量
  printf("请输入一个整型");
  scanf("%d", &y);  // 注意 scanf 要取地址  &
  printf("用户输入的内容是%d\n", y);
  /********字符型********/
  char ch;    //准备变量
  printf("请输入一个字符");
  scanf("%c", &ch);  // 注意 scanf 要取地址  &
  printf("用户输入的内容是%c\n", ch);
  /********单精度浮点型*********/
  float a;     //准备变量
  printf("请输入一个float型");
  scanf("%f", &a);  // 注意 scanf 要取地址  &
  printf("用户输入的内容是%f\n", a);
  /********双精度浮点型*********/
  double b;     //准备变量
  printf("请输入一个double型");
  scanf("%lf", &b);  // 注意 scanf 要取地址  &
  printf("用户输入的内容是%lf\n", y);
  return 0;
 }
  • 输入控制
    scanf 获取用户输入的数据 将数据存放在某个地址 既&变量
    比较严格 %f %lf 不能混用
  • 输出控制
    除了基本的输出之外,printf还提供了一系列输出控制,以便使输出的内容更加整齐正式
    完整的printf 格式 %[标志] [宽度] [.精度]type

格式字符

格式字符用以指定输出项的数据类型和输出格式。

①d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%ld:输出长整型数据。
②o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用“%mo”格式输出。
例:
      main()
      { int a = -1;
        printf("%d, %o", a, a);
      }
     运行结果:-1,177777
     程序解析:-1在内存单元中(以补码形式存放)为(1111111111111111)2,转换为八进制数为(177777)8。
③x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。
④u格式:以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用“%mu”格式输出。
⑤c格式:输出一个字符。
⑥s格式:用来输出一个串。有几中用法
%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。
%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。
%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。
%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。
%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。
⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:
%f:不指定宽度,整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。 
%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
⑧e格式:以指数形式输出实数。可用以下形式:
%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。
%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。
⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。

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

3.赋值

定义了变量之后,要给变量赋值。没有被赋值的变量是不能被使用的,这是C语言的一个重要规定。

int a;//定义变量
a = 5;//赋值

int a = 5;//一步到位

4.变量的命名规则

真正的软件开发中,变量命名是一个非常重要的内容。在团队开发、项目传承的过程中,代码的可读性起着重要的作用。因此要养成好的变量命名习惯。

4.1 命名要能望文生义

要便于记忆和阅读。标识符最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确。C语言开发中有一个比较著名的命名规则叫“匈牙利命名法”,有兴趣可以学习一下。

无论什么样的命名规则,都有它的利弊所在,真正的项目中也会有具体的命名规则要求。重点是,每个人自己写的代码要自己有一个统一的规则,这样无论是别人还是自己都更容易读懂和维护。不要过一段时间连自己写的代码都看不懂了,这是最基本的要求。

其实大学计算机等级考试中,很多题目都是符合这条的,这给考生很多空子可钻。记得有个题目是这样的。

int a, b, sum;
a = 5;
b = 1;

sum = XXXXX(a, b);

printf("%d", sum);

请问屏幕打印出的数字是多少?

这道题主要考的是XXXX函数的问题,也许你根本没看懂这个函数是啥意思,但一看变量“sum”你就知道最终输出的肯定是一个和,所以答案是6。

4.2 要用最短的命名表达最多的意思

虽然现在对命名长度的限制越来越小,但过长的命名还是影响代码的可读性。

4.3 尽量不要出现数字

Value1,Value2 这样的变量还是少用为好

4.4 不要靠大小写区分的相似的标识符

int a, A; // 绝对不允许 

反正容易混淆的就尽量别用

好了,今天就先说到这里。下一篇我们开始讲常量与变量。


https://www.xamrdz.com/lan/5pa2016567.html

相关文章: