网站首页 > 技术文章 正文
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
非也。尽管C系语言遵循的基本原则是定义变量,类型在前面,名称在后面,但这并不是绝对。Go和Rust是这方面的先锋。
- C/ObjC/C++/C#/Java 类型在标识符前。
 - Go/Rust/Swift/仓颉 标识符在类型前。
 - Python/JS/Shell 不需要指定类型。
 - VB稍显特殊,它的声明形式是:Dim xxx As yyy_type, 勉强算类型在变量后面。VB 9.0开始支持隐式本地变量,可省略类型交给编译器推导。
Dim myNumber = 10 
类型在前或在后有什么不同?
- 从直面效果,仅仅是位置颠倒了,例如Go语言var a, b int = 1, 2, Rust语言let a: u32 = 100, 并没有影响编译器理解。
 - 从另外一个角度,对于一条声明/初始化语句的几个部分,变量、类型和声明/初始化,变量是不可缺少的,类型或者初始化是可省略的。以Go为例,可以省略类型var a = 100,或者省略初始化var b int.
 
如何理解typedef定义的类型?
大部分编程语言都支持由程序员自定义新类型,除了结构体、共同体明显的新类型,还有typedef由已有类型复制"新"类型,事实上,它就是原来的类型。用它的好处是可以统一内部类型定义。
- 可防止编译器对同一个类型有不同定义
比如为了统一32bit类型为U32, 可以定义typedef int U32, 有的编译器long是32位时可定义成typdef long U32. - 和Shell的alias类似,程序员可以选择自己更喜欢的类型名,而不是古板遵循语言标准,也许还可以节省Coding字符数。
 
编译器内部typedef的处理
- 编译器可能会建立typedef类型列表,对应已有的类型,在处理上会按照原本类型来看,并没有什么特别。
 
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
- 上一篇: 7. 包管理与模块(包和模块的区别)
 - 下一篇: 新拟物化,会是下一个UI设计趋势吗?
 
猜你喜欢
- 2025-08-01 Visual C++对C/C++新标准的支持有何诟病之处?C语言有哪些标准?
 - 2025-08-01 《学习C++》基本概念之名称
 - 2025-08-01 《学习C++》之基本概念
 - 2025-08-01 仓颉编程语言基础-面向对象编程-接口(Interface)核心特性
 - 2025-08-01 《学习C++》基本概念之标识符
 - 2025-05-08 7. 包管理与模块(包和模块的区别)
 - 2025-05-08 Python基础知识:什么是非局部语句?
 - 2025-05-08 苹果来真的!明年起不符合隐私要求的App将从应用商店移除
 - 2025-05-08 Java枚举(java枚举菜鸟教程)
 - 2025-05-08 可验证凭证(VC):数字时代的重要信任基石
 
- 最近发表
 - 
- 聊一下 gRPC 的 C++ 异步编程_grpc 异步流模式
 - [原创首发]安全日志管理中心实战(3)——开源NIDS之suricata部署
 - 超详细手把手搭建在ubuntu系统的FFmpeg环境
 - Nginx运维之路(Docker多段构建新版本并增加第三方模
 - 92.1K小星星,一款开源免费的远程桌面,让你告别付费远程控制!
 - Go 人脸识别教程_piwigo人脸识别
 - 安卓手机安装Termux——搭建移动服务器
 - ubuntu 安装开发环境(c/c++ 15)_ubuntu安装c++编译器
 - Rust开发环境搭建指南:从安装到镜像配置的零坑实践
 - Windows系统安装VirtualBox构造本地Linux开发环境
 
 
- 标签列表
 - 
- cmd/c (90)
 - c++中::是什么意思 (84)
 - 标签用于 (71)
 - 主键只能有一个吗 (77)
 - c#console.writeline不显示 (95)
 - pythoncase语句 (88)
 - es6includes (74)
 - sqlset (76)
 - apt-getinstall-y (100)
 - node_modules怎么生成 (87)
 - chromepost (71)
 - flexdirection (73)
 - c++int转char (80)
 - mysqlany_value (79)
 - static函数和普通函数 (84)
 - el-date-picker开始日期早于结束日期 (76)
 - js判断是否是json字符串 (75)
 - c语言min函数头文件 (77)
 - asynccallback (87)
 - localstorage.removeitem (77)
 - vector线程安全吗 (73)
 - java (73)
 - js数组插入 (83)
 - mac安装java (72)
 - 无效的列索引 (74)
 
 
