符号なし整数と符号付き整数の違い、および符号なし整数の使用

符号付き整数:
ここに画像の説明を挿入
符号なし整数:
ここに画像の説明を挿入
注:

  1. 符号なしデータは数量を意味し、正の値のみを意味します
  2. unsigned unsigned IDは、データ型のバイトサイズを変更しません
  3. 符号なしデータを出力するには、前のすべての%dを%uに置き換えます。VSでの変換に注意を払わず、符号なし型を%dで出力する場合、コンパイラはそれを最適化し、符号なし型を符号付き型として押します。 。出力の場合、最適化の前提は次のように書くことではありません。
unsigned int a = -10u;

ここに画像の説明を挿入
uを追加した後、先頭に負の符号を記入すると、符号なし整数であることが明らかなため、エラーが報告されます
ここに画像の説明を挿入
%uを使用して負の整数を出力すると、文字化けが発生します。
ここに画像の説明を挿入
ここに画像の説明を挿入

  1. 署名されたタイプは通常、署名される前に書き込まれません
  2. 変数を定義するとき、次のdとuは通常省略されます。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void test()
{
    
    
	unsigned int a = 10u; //简写成unsigned int a=10;
	//注意:这里不能用hu
	unsigned short a1 = 10u; //简写成unsigned short a1=10;
	unsigned long a2 = 10lu; //简写成unsigned long a2=10;
	unsigned long long a3 = 10llu; //简写成unsigned long long a3=10;

	printf("int a=%u\n", a);
	//这里打印short短整型要用hu
	printf("short a1=%hu\n", a1);
	printf("long a2=%lu\n", a2);
	printf("long long a3=%llu\n", a3);
}
int main()
{
    
    
	test();
	return 0;
}

`ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void test()
{
    
    
	 int a = 10; //简写成int a=10;
	//注意:这里不能用hu
	 short a1 = 10; //简写成 short a1=10;
     long a2 = 10l; //简写成 long a2=10;
	long long a3 = 10ll; //简写成 long long a3=10;

	printf("int a=%d\n", a);
	//这里打印short短整型要用hd
	printf("short a1=%hd\n", a1);
	printf("long a2=%ld\n", a2);
	printf("long long a3=%lld\n", a3);
}
int main()
{
    
    
	test();
	return 0;
}

ここに画像の説明を挿入

注:sizeof()の戻り値は次のとおりです。

ここに画像の説明を挿入
size_tは、%uを使用するsizeofの戻り値受け取るunsignedintと同等です。

おすすめ

転載: blog.csdn.net/m0_53157173/article/details/114096771