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

二.基本数据类型

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


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; // 绝对不允许 

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342