c 有哪些变量类型

嗯,你的总结很全面。
你是从课本上抄来的吗? 😂 C语言的类型分类并不正确。
但我会告诉你我真正挣扎的地方或者我觉得有趣的地方。

例如,当我第一次开始学习整数类型时。
Short 和 int 经常被混淆,尤其是在不同的平台上。
记得2 01 5 年在北京的培训班写代码,用int来定义一个大数。
在6 4 位系统上没问题,但是一旦我切换到3 2 位系统就溢出了。
后来老师说这要看具体的编译器和平台。
现在,当我编写代码时,我使用 long 来表示大多数安全数字。

浮点数也是一个黑洞。
我在2 02 2 年在上海做一个项目,有一个计算要求特别高的精度。
直接使用 float 是不够的,结果数据也不适合。
后来改为双倍,不再有用。
但双倍也不是万能的。
无论多么准确,都有其局限性。
特别是对于金融或科学计算;有时你必须使用两倍长的特殊库,但其跨平台兼容性非常糟糕。

布尔类型是在C9 9 中引入的,之前是整数模仿的。
当我第一次接触它时,我记得一位同事让我使用0和1 ,说这样更有意义。
后来我发现使用bool(或stdbool.h)确实更规范,编译器也可以对其进行优化。

按存储特性分类比较实用。
自动变量是最常见的。
一旦函数被调用,它们就存在;一旦通话完成,它就会消失,并在使用后燃烧。
我遇到了静态变量的内存泄漏。
我忘记了静态变量在程序结束之前不会被释放。
寄存器变量很少使用。
今天的编译器已经得到了很好的优化。
一般来说,除非有一段特别重要的性能代码,否则不需要显式声明注册。

我在经常使用的文件上共享外部变量。
例如,当我在深圳做一个项目时,一个.c文件中的全局变量可以使用 extern 在另一个.c文件中使用。
然而,跨文件定义的变量必须一致地初始化;请注意,否则编译器会警告您。

复合数据类型我不多讲。
适应症;数组、结构体、联合和枚举它是C的核心。
不过,我不太使用conglomerate,但我记得在之前的一次采访中被问到,它的内存共享功能在某些情况下非常有效。

不管怎样,学C的时候,这些类型你一定要了解。
不要像我一样只知道含义而不知道为什么使用这种类型以及这样使用时的性能差异。
多写代码,多找毛病,慢慢你就会明白了。

C++中如何定义变量 基本数据类型与声明语法详解

好吧,让我告诉你如何在 C++ 中定义变量。
当时我也为此苦苦挣扎。

那一年,我开始使用 C++ 开发一个项目并编写一个小工具。
从一开始就是一个盲目的定义,int a;,b=5 ;,没有别的。
结果?有时编译后,我在运行时不断看到很多晦涩难懂的东西。
后来我才知道,未初始化的变量只是一个“幽灵”,可以容纳任何东西。

场景:一年,我用int count写了一个统计程序。
这个东西在堆栈上并且显然没有初始化。
直接打印计数。
有时是-1 ,有时又扭曲,真是让人头疼。

所以你看,定义一个变量,首先要确定数据类型,还要弄清楚标识符(变量名)。

数据类型: int:最常用的整数类型。
例如,如果您计算数字或循环计数,请使用它。
我在写学生管理系统的时候,使用了int StudentCount = 0;用过的。
来计算学生人数。
在Windows系统中这个东西通常是3 2 位的,这就足够了。
Float 和 Double:浮点数。
如果是数钱,需要高精度,就用double,例如double价格=9 9 .9 9 ;。
如果从事图形渲染,精度要求不高,float就足够快了。
记得当时做小游戏,渲染坐标的时候,用的是float x = 1 .0f;被使用,并且f不应该小于。
char:存储单个字符。
像'a','$',这些。
当我处理用户输入时,我使用了 char ch;使用 ,然后 scanf("%c", &ch);读取一个字符。
bool:布尔类型,为真或假。
评估条件,例如 bool finish = false;。
void:空类型,什么也不说,一般用于没有返回值的函数,或者指针类型为void,可以指向任何类型。

变量名(标识符): 它不能以数字开头,必须以字母或下划线开头。
例如,int 1 a;不起作用。
int myVar;和 int myvar;有两个变量。
最好不要使用系统关键字,例如int if;这肯定行不通。
当我现在编写代码时,我使用下划线 int Total_amount;,或者在驼峰式情况下使用 int totalCount;我喜欢用。
看清楚。
不要只使用 a、b、c 就完成了,除非它是临时变量,例如循环中的 i、j。

声明和定义的区别: 语句:告诉编译器“我有一个名为 a 的 int”,但不给它内存。
例如, extern int a; 或 int a; (定义实际上包括声明)。
如果你在头文件中多写几个声明,其他人就可以使用你的变量,但内存还没有分配。
定义:内存的实际分配。
例如,int a = 1 0;,这既是声明,又是定义。
编译器看到哦,需要分配一块内存,初始值为1 0 场景:比如我写一个库,有一个头文件mylib.h,其中包含int myGlobalVar;是这样写的。
这就是定义。
然后在另一个文件中包含“mylib.h”并 int localVar = 5 ;写。
这是当地的公告。
MyGlobalVar 在头文件中声明(extern int myGlobalVar;,尽管在编写定义时也是这样做的)并在当前文件中使用。

初始化!初始化!初始化! 必须启动!特别是局部变量。
正如前面提到的,在没有初始化的情况下,它可以具有任何值。
当我编写程序时,我忘记初始化计数器。
结果就超出了范围,需要很长时间才能更换。
场景:某年某月,我写了一个for(int i=0; i<1>如果我在没有初始化 i 的情况下编写 for(int i; i<1> 可以显式初始化,int x = 0;。
C++1 1 之后可以使用{}来初始化,int y = {};,实际上初始化为0。
全局变量和静态变量如果没有显式初始化则默认初始化为0。

总之,定义变量时,要考虑清楚类型的用途。
不要随意命名变量。
您应该开始使用它并了解声明和定义之间的区别。
你必须记住你所经历的所有麻烦。
别像我当时一样,盲目地写,后来一边调试一边哭。