看下面一段代码:

struct test {

int body1:1;

int body2:2;

};

这里提出的问题是,结构体里面的冒号的作用是什么。这种冒号的用法不是我随便杜撰的,而是在实际的代码里面看到的。

在C++的函数定义时,参数列表之后可以使用冒号来给变量赋值,这里的冒号是不是也起着给结构体成员赋默认值的作用呢?是与不是,通过测试来揭晓。

首先,我写了一个测试驱动函数test来专门进行测试,如下:

void test()

{

structtest struction;

printf("body1:%d; body2:%d\n", struction.body1,struction.body2);

}

在定义结构体变量struction时,我没有给它赋值,以此来测试是不是给它的成员赋了默认值{1,2}。该函数在编译后,运行的结果如下:

body1:0;  body2:0

失望了,不是我们认为的默认赋值。

那么修改变量的定义,给它们赋值后再打印,如:struct test struction = {1,2};

这次,程序编译后的运行结果是:

body1:-1; body2:-2

这次的结果怎么解释?是不是冒号起一个取负数的作用,后面的数字没用?还是其它,再取几组数字试试:

struct test struction = {1,2};

结果:body1:-1; body2:-2

struct test struction = {1,4};

结果:编译报错,在struct test struction = {1,2}赋值语句处:warning:overflow in implicit constant version。

居然出现了溢出,应该是在把4赋给struction.body2时溢出。这下,有结果了,冒号后面的数字表示的是数位。

据我推测,冒号在这里的用处主要为限制使用位数:

x:num,表示x只有其最后的num个bit位有效,且在计算时是用的“补码”表示。

如x:3,如果x赋值为7,则x值为“-1”(第三位为1,表示负数,其它位取反加1,为01,则结果为-1)。

另外,结果的正负是与变量本身的定义有关。

如x为Int时,x:3,赋值为7,则实际结果为-1,若x为 unsigned int,则x:3,赋值为7时,结果为7.

c语言程序冒号的作用是什么,C语言里面的冒号相关推荐

  1. DSB算法C语言程序,单片机中使用DSB温度传感器C语言程序.doc

    单片机中使用DSB温度传感器C语言程序 单片机中使用DS18B20温度传感器C语言程序(参考1) /************************************************** ...

  2. c语言程序头文件作用,C语言头文件

    C语言头文件教程 C 语言的头文件一般都是 .h 做为结尾的. C语言头文件详解 语法 #include 参数 参数 描述 filename 我们需要引入的头文件的名称. 说明 C 语言的头文件一般都 ...

  3. 在c语言中 函数的作用是什么,C语言程序中函数的定义

    C语言程序中函数的定义 C语言的函数问题是困扰很多学者的问题的,c程序中什么是函数呢?下面啦小编为大家精心推荐的c程序中函数的定义,希望能够对您有所帮助. C语言读书笔记--函数 先来看看函数的一般形 ...

  4. c语言中单词的作用与形式,C语言基础教程:单词的用法与规则

    在C语言中,单词是由若干个有序的字符组成的,单词的集合称为词汇.C语言的单词有如下几种:标识符.关键字.运算符.分隔符.常量.字符串和注释符. 下面对上述7种单词的词法规则逐一详述,有些单词,例如,关 ...

  5. c语言程序女设计教学效果分析,C语言程序设计的教学论文

    C语言程序设计的教学论文 1C语言程序设计教学方法研究 1.1理论教学 对于大多数课程而言,从宏观上将课程知识点及其关联讲授给学生非常必要,这便于学生更加系统深刻地理解所学内容.作为教材讲解C语言程序 ...

  6. c语言程序代码有什么用,用c语言编写的代码程序是什么?

    前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...

  7. 下列不属于C语言程序开发步骤,程序设计技术(C语言)-中国大学mooc-题库零氪...

    第1章 程序设计基础 第1章 选择题 1.以下不属于算法基本特征的是( ). A.有穷性 B.有效性 C.可行性 D.有一个或多个输出 2.N-S图与传统流程图比较,主要优点是( ) A.杜绝了程序的 ...

  8. c语言程序中的错误可分为,C语言程序常见错误与调试方法(1)

    <C语言程序常见错误与调试方法(1)>由会员分享,可在线阅读,更多相关<C语言程序常见错误与调试方法(1)(17页珍藏版)>请在人人文库网上搜索. 1.C语言程序常见错误与调试 ...

  9. c语言程序的核心思想是什么,c语言程序设计心得(2)

    C语言编程学习心得篇一 学习C语言已经一年多,对C也算得上半个入门者,期间也写过一些自娱自乐的代码.其实个人认为无论学习什么语言,最重要的是掌握习编程思想,然而C语言一种学习编程思想的基础语言.所以, ...

最新文章

  1. signature=89b7a6bcfac55abae5ac369dafee29f4,Capecitabine
  2. 工作中常用的第三放的框架
  3. Deep Learning Face Representation by Joint Identification-Verification
  4. 湖南大学第十六届程序设计竞赛 B Yuki with emofunc and playf 同余最短路
  5. 移动发布手机病毒警示信息 发现六种新型病毒
  6. c#winform演练 ktv项目 在dataGridView中显示歌曲列表
  7. 过磅系统_简讯:崇义商砼公司开展无人值守过磅系统业务培训等二则
  8. echarts 系列一
  9. php实现弱类型,PHP内核探索:弱类型变量的实现
  10. JSJQuery必备技能
  11. Android不同版本下Notification创建方法
  12. vs2013的mfc开发上位机
  13. java解析shp文件
  14. 【Web开发】HTML颜色代码表
  15. bbs.php168,PHP168与PHPWIND深度联手 CMS+BBS整合将成趋势
  16. 30分钟轻松在华为云上搭建网站应用(零基础手把手教学)
  17. 【训练记录】2013-2014 Petrozavodsk Winter Training Camp, Moscow SU Trinity Contest @homework-7
  18. 操作系统从MBR到加载内核的开机过程
  19. css:table-cell的妙用
  20. LeetCode 871. 最低加油次数

热门文章

  1. kali linux教程:配置 Kali 的 apt 命令在线安装包的源为阿里云
  2. HTML5与CSS3基础教程学习笔记【第三章 基本HTML结构】
  3. opencv(三)对图像进行简单算术运算(加减乘除)
  4. Gitlab Runner 部署
  5. html像素小鸟小游戏,微信小游戏-像素鸟游戏
  6. RISC-V E300 SOC架构介绍——1.总体介绍
  7. c语言小程序飞机大战,飞机大战微信小游戏:经典像素飞机大战小程序,点开即玩...
  8. 小米如何使用远程管理FTP操作电脑和手机的文件
  9. 李宏毅2021机器学习笔记——Regression
  10. java课程设计计算器 uml简图,计算器的用例建模