C言語 - 整数の変数

変数の分類整数タイトル:

(注:!数バイトがコンパイラで見ることができ、デバッグ、オペレーティングシステムとコンパイラ規定を占める)
1)基本:型指定は、メモリの4バイトのint型である
2)短整数:intまたは短いショート、および範囲内の実質的に同一のバイトによって占有される
)3ロング:長いintまたは長い、メモリ内に4つのメモリを表す
4)unsigned型:符号なし

コンパイラの出力変数タイプバイト数:
ここに画像を挿入説明
ここに画像を挿入説明
説明、私はこのプログラムは非常にスムーズに実行するだろうと思った、その結果は、いくつかの小さなエピソードでした。閉じる検査は、コンマで中国人の形になって、で、その後、すぐに戻って変更し、正しい結果を出力すること、を示しました。これは、メモリ内のint型の基本的な4バイト、VC ++ 6.0であることが判明しました。
もちろん、あなたがバイトを検証する必要性に関連した他のタイプのメモリにはsizeof()int型の内部を置き換えることができます

整数変数の定義

"として定義された変数の一般的な形態
、タイプ指定識別子変数名、変数名識別子は、...(セミコロンは、文の終わり表す
:より一般的なのいくつかの例引用
(整数として定義され; int型A、B、Cを変数)
短いX、Y、Z;(短整数変数として定義される)
フロートM、N-(float型の変数として定義されます)

変数の定義を記述する場合は、してください注意:

  • 型指定は、変数名との間で、同じタイプの複数の変数を続けることができ、分離しました。
  • 最後の変数名の後でなければなりません。番号の末尾。
  • あなたは、一般的に、関数本体の先頭に置かれ、使用する変数を定義する必要があります。定義されていない、この変数のメモリーがありません。もちろん、それを使用することはできません。

【例3.1】

#include<stdio.h>
void main()
{
int a,b,c,d;
unsigned u;
a = 12;
b = -24;
u = 10;
c = a + u; d= b+u;
printf(“a+u=%d,b+u=%d\n”,c,d);
}

因为使用到了printf输出语句,所以我们开头要用预处理语句stdio.h。在”“里面的都是以字符的形式输出,就是说你在字符串里面写什么输出的就是什么,%d是形式输出,每一个%对应后面的数,即第一个%d对应c,第二个%d对应d,c,d均以整型的形式输出。

输出的结果如图所示:
ここに画像を挿入説明
当然我们这里是以字母相加的形式输出,我们也可以用%d对其进行替换,输出数字相加的形式,当然后面对应%d的字母也要相应替换掉,否则会乱掉,以图为鉴:
ここに画像を挿入説明

溢出

溢出呢,怎么理解比较好一些呢?打个比方吧,我们来想一下一个水桶,水桶的容积是固定的,也就是说这个水桶能装多少水是固定的,当我们往里面放水,水的体积超过了水桶的容积的时候,超过水桶容积这部分的水就会溢出了。同样的道理,我们的内存给一个类型的数据分配的空间是固定的,当存入的数据值大小超过这个存储空间时,超出的这部分就自然而然地溢出了。

【例3.2】

#include <stdio.h>

void main()
{
  int a,b;
  a = 32767;
  b = 1 + a;
  printf("%d,%d\n",a,b);
}

运行出来的结果图如下:
ここに画像を挿入説明
这段代码的功能就是输出a,b的数值。int在内存里面占四个字节。此时并没有出现任何异常。但是当我们将int 改为short int 时,就变成如下情况:
ここに画像を挿入説明
这个时候就发生溢出了。为什么呢?
因为啊,虽然是十六位,但是第一位是符号位,实际用来存储的就只有15位。我们来看一下:
32767:0111 1111 1111 1111
-32768: 1000 0000 0000 0000(负数的最大数)

当在程序中遇到不同类型的数据时,编译器会进行自动转换,分为两种,一种是显式转换,另一种是隐式转换。通常,编译器进行的是的分类:
(注意:占几个字节跟操作系统和编译器规定有关,可以在编译器上调试查看!)1)基本型:类型说明符为int,在内存中占4个字节2)短整型:short int或short,所占字节和取值范围基本相同3)长整型:long int或long,在内存中占4个内存4)无符号型:为unsigned在编译器中输出变量类型所占字节数:ここに画像を挿入説明ここに画像を挿入説明说明一下,这个程序我原本以为会运行得很顺利,结果还是出了点小插曲。仔细检查发现了,就是这个逗号用成了中文的形式,然后立马改回来了,就输出正确结果。事实证明,在VC++6.0中,int基本型在内存中占4个字节。当然也可以把sizeof()里面的int替换成其他需要验证的类型所占内存的字节 ## 整型变量的定义变量定义的一般形式为“类型说明符 变量名标识符,变量名标识符…;(一个分号表示一个语句结束)举比较常见的几个例子:int a,b,c;(定义为整型变量)short x,y,z;(定义为短整型变量)float m,n;(定义为浮点型变量)在书写变量定义时,需注意: - 一个类型说明符后面可跟多个相同类型的变量,各变量名之间用;隔开。 - 最后一个变量名之后必须用;号结尾。 - 必须先定义变量才能使用,一般放在函数体的开头部分。不定义的话,内存里就不存在这个变量。当然无法使用它。 【例3.1】> #include<stdio.h>void main(){ int a,b,c,d; unsigned u; a = 12; b = -24; u = 10; c = a + u; d= b+u; printf(“a+u=%d,b+u=%d\n”,c,d);}因为使用到了printf输出语句,所以我们开头要用预处理语句stdio.h。在”“里面的都是以字符的形式输出,就是说你在字符串里面写什么输出的就是什么,%d是形式输出,每一个%对应后面的数,即第一个%d对应c,第二个%d对应d,c,d均以整型的形式输出。输出的结果如图所示:ここに画像を挿入説明当然我们这里是以字母相加的形式输出,我们也可以用%d对其进行替换,输出数字相加的形式,当然后面对应%d的字母也要相应替换掉,否则会乱掉,以图为鉴:ここに画像を挿入説明## 溢出溢出呢,怎么理解比较好一些呢?打个比方吧,我们来想一下一个水桶,水桶的容积是固定的,也就是说这个水桶能装多少水是固定的,当我们往里面放水,水的体积超过了水桶的容积的时候,超过水桶容积这部分的水就会溢出了。同样的道理,我们的内存给一个类型的数据分配的空间是固定的,当存入的数据值大小超过这个存储空间时,超出的这部分就自然而然地溢出了。【例3.2】#include <stdio.h>void main(){ int a,b; a = 32767; b = 1 + a; printf("%d,%d\n",a,b);}运行出来的结果图如下:ここに画像を挿入説明这段代码的功能就是输出a,b的数值。int在内存里面占四个字节。此时并没有出现任何异常。但是当我们将int 改为short int 时,就变成如下情况:ここに画像を挿入説明这个时候就发生溢出了。为什么呢?因为啊,虽然是十六位,但是第一位是符号位,实际用来存储的就只有15位。我们来看一下:32767:0111 1111 1111 1111-32768: 1000 0000 0000 0000(负数的最大数) 当在程序中遇到不同类型的数据时,编译器会进行自动转换,分为两种,一种是显式转换,另一种是隐式转换。通常,编译器进行的是隐式转换,就是将范围小的数据类型向范围大的转换,而显式转换又称强制转换,将更大范围的数据类型转换成更小类型的数据。

此次程序编译过程出现的一丢丢错误:就是在printf("%d,%d\n",a,b);这句话中,我将"后面a前面的这个逗号给省略掉之后,编译就一直在报错,于是检查一遍发现后,添加上去了,就没问题了。这里是因为要用这个逗号进行分段,使其能够进行区分识别是以字符串形式输出还是以数字形式输出。下次不能再犯这种错误了呀!

实型数据

1、实型常量的表示方法:
实型就是数学中的实数,C语言采用十进制表示,二进制存储。有时候我们分不清一个数字是整型还是浮点型,举个栗子,5.00是个整数还是浮点数呢?不确定对吧,5.00f后面加一个f。
2、存放形式
学完了表示方法我们再学习一下存储方式,3.1415926这样子存

符号 小数 指数
+ .31415926 1

我们来算一下.31415926*10^1=3.141592
一位为符号位,七位为小数位,剩余的二十四位为指数位

小数部分占的位数越多,数的有效数字越多,精度越高;指数部分占的位数越多,则能标识的数值范围越大。

3、实型变量的分类
分为三种:单精度(float)、双精度(double)、长双精度(long float)三类。

公開された10元の記事 ウォンの賞賛1 ビュー1246

おすすめ

転載: blog.csdn.net/weixin_43671182/article/details/94203602