c语言以冒号分割字符串,C语言里面的冒号
看下面一段代码:
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语言里面的冒号相关推荐
- c语言以空格分割字符串_C语言: 利用sscanf() 函数分割字符串
头文件:#include sscanf()函数用于从字符串中读取指定格式的数据,其原型如下: int sscanf (char *str, char * format [, argument, ... ...
- c语言以空格分割字符串_C语言strtok()函数:用指定的分隔符分解字符串
函数名: strtok 头文件: 函数原型: char *strtok(char *str1, const char *str2); 功能: 用指定的分隔符分解字符串 参数: char *str1 ...
- c语言以空格分割字符串,C语言程序要读入一行文本,以空格分隔若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。...
对于每个英文字母分别判断个数,并累计,最终输出即可.一.算法:1.循环读取字符,直到换行为止.对于每个字符,执行以下流程.2.判断是否为英文字母,即小写和大写两种.3.如果是英文字母,则统计个数.输入 ...
- C语言按子串分割字符串
C语言按子串分割字符串 一.按字符分割字符串 C语言提供了一个按字符分割字符串的库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组 ...
- 分割字符串c语言strsep,C语言 字符串切割
#include #include #include /* 字符串切割函数 */ /* 知识补充: 1. 函数原型: char *strtok(char *str, const char *delim ...
- c语言数组取出特定字符串,C语言根据特定的符号分割字符串 如:字符串a,bbb,ccc-数组[a,bbb,ccc]...
//根据符号','分割字符串,例如:字符串"a,bbb,ccc"->数组[a,bbb,ccc] author:wangchangshuai jlu char** splitF ...
- c语言将字母存入字符串,C语言把资料读入字符串以及将字符串写入文件
C语言把文件读入字符串以及将字符串写入文件 1.纯C实现 FILE *fp; if ((fp = fopen("example.txt", "rb")) == ...
- c语言插入特定的字符串,C语言实现:将一个字符串插入到另一个字符串的指定位置...
C语言实现:将一个字符串插入到另一个字符串的指定位置 发布时间:2018-08-22 13:23, 浏览次数:1672 示例一: char *insert(char *s1, char *s2, in ...
- c 语言比较三个字符串,C语言字符篇(三)字符串比较函数
C语言字符篇(三)字符串比较函数 #include int strcmp(const char *s1, const char *s2); 比较字符串s1和s2 int strncmp(cons ...
最新文章
- 【 FPGA 】UltraFast设计方法学:时序收敛之时序约束基本准则
- JavaWeb中post提交乱码之编码拦截器Filter
- Spark对Kafka两种连接方式的对比——Receiver和Direct
- windows文件中的中文在ubuntu下乱码(小弟参考了许多都不行,这个绝对行啊) .
- Python操作Kafka爬坑
- GIL线程全局锁 协程
- pyqt5 qscrollarea到达_PyQt5如何用QPainter在QScrollArea上画线?
- 华为高管预告手机鸿蒙OS下月上线,华为手机部:我们没说过
- linux提示有新邮件,/var/spool/mail/root 中有新邮件 解决方法
- oracle数据库考试答题,Oracle数据库试题
- 博客V7之后,喜庆排名进入2000之内
- oracle的采购管理模块,ORACLEERP采购管理模块操作手册
- 优车车欲用Uber模式和传统驾校一起打一场漂亮仗
- “21天好习惯“ 第四期 — 4
- nifi mysql hive_Nifi入门
- 2 spss 统计绘图与线性回归
- 强推!阿里数据科学家一次讲透数据中台
- Shell中的expr命令
- hdu 1069 Monkey and Banana 【动态规划】
- Edge浏览器固定到任务栏的网页图标显示透明
热门文章
- Thymeleaf文档
- 超详细百家大厂面试资料,免费送!
- 用华为鸿蒙 OS 2.0 系统写出了HelloWorld!那些说鸿蒙是PPT的可以闭嘴了!
- java 多线程下载器_Java多线程的下载器(1)
- C语言实现录入学生信息并按分数排序输出
- AngularJS相关网站存档
- php文件手机怎么解压,linux 怎么解压文件
- java中的乐活锁_(转)[乐活]别抱怨了,Shit happens!
- catia目录编辑器使用教程_如何去编辑数学公式?公式编辑器使用教程
- 面试官:你说一下Redis使用场景都有哪些