程序猿之---C语言细节26(C语言中布尔类型、continue细节、sizeof举例、strlen举例)

主要内容:C语言中布尔类型、continue细节、sizeof举例、strlen举例

一、布尔类型

可能很多人不知道现在C语言已经有了布尔类型:从C99标准开始,类型名字为"_Bool"

在C99标准之前我们常常自己模仿定义布尔类型,常见有以下几种方式:

1、方式一

#define TURE 1
#define FALSE 0

2、方式二

typedef enum {false, true} bool;

3、方式三

typedef int bool

闲int浪费内存,对内存敏感的程序使用

typedef char bool

C99标准中新增的头文件中引入了bool类型,与C++中的bool兼容。该头文件为stdbool.h,其源码如下所示:

#ifndef _STDBOOL_H
#define _STDBOOL_H 

#ifndef __cplusplus 

#define bool    _Bool
#define true    1
#define false   0 

#else /* __cplusplus */ 

/* Supporting <stdbool.h> in C++ is a GCC extension.  */
#define _Bool   bool
#define bool    bool
#define false   false
#define true    true 

#endif /* __cplusplus */ 

/* Signal that all the definitions are present.  */
#define __bool_true_false_are_defined 1#endif /* stdbool.h */ 

二、continue

continue细节就是要在循环中使用,不然会报错

#include <stdio.h>

int main()
{
	int a = 1;
	switch(a)
	{
		case 1:
			printf("1\n");
	 		continue; // continue必须用在循环中
	 		break;
		case 2:
			printf("2\n");
		default:
			break;
	}
	return 0;
}

三、sizeof举例

#include <stdio.h>
int b[100];
void fun(int b[100])
{
	printf("in fun sizeof(b) = %d\n",sizeof(b)); //感觉函数中数组按指针处理的
}
int main()
{
	char *p = NULL;
	printf("sizeof(p) = %d\n",sizeof(p));
	printf("sizeof(*p) = %d\n",sizeof(*p));

	printf("-----------------------\n");
	char a[100];
	printf("sizeof(a) = %d\n",sizeof(a));
	printf("sizeof(a[100]) = %d\n",sizeof(a[100]));
	printf("sizeof(&a) = %d\n",sizeof(&a));
	printf("sizeof(&a[0]) = %d\n",sizeof(&a[0]));
	printf("-----------------------\n");
	fun(b);
	return 0;
}

输出:

四、strlen举例

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
/*
	问题
	1、-0和+0在内存中分别怎么存储
	2、int i = -20;
	   unsigned j = 10;
	   i+j的值为多少?为什么?
	3、 下面代码有什么问题?
	unsigned i;
	for(i = 9; i>=0; i--)
	{
		printf("%u\n",i);
	}
*/
int main()
{
	bool bool2 = 0;  /* C语言bool类型是在C99才有的,如果没有包含头文件stdbool.h,直接用bool会报错误*/
	_Bool bool1 = 1; /*直接使用_Bool不用包含stdbool.h*/
	char a[280];
	char *str = "12340987\0 56";
	char test[] = "12340987 56";
	int i;
	printf("strlen(a) = %d\n",strlen(a));
	for(i = 0; i < 280; i++)
	{
		a[i] = -1-i; // a[256]  = 0
	//	printf("a[%d] = %d\n",i,a[i]);
	}

	printf("strlen(a) = %d\n",strlen(a));  // 为什么是255
	printf("strlen(str) = %d\n",strlen(str));
	printf("strlen(test) = %d\n",strlen(test));

	char s = '\0';
	printf("\\0 = %d\n",s);
	return 0;
}

输出:

时间: 2024-10-17 18:22:32

程序猿之---C语言细节26(C语言中布尔类型、continue细节、sizeof举例、strlen举例)的相关文章

程序猿之---C语言细节24(段错误、类型提升、sizeof &#39;A&#39;)

主要内容:段错误.类型提升.sizeof  'A' #include <stdio.h> int main() { union test{ char a[10]; int b; }u; int *p = (int *)&(u.a[1]); // 没有引起总线错误 *p = 17; printf("%d\n",*p); #if 0 int *q = 0; // 引起段错误,在linux中运行可看到段错误,在windows下运行时直接出错 *q = 1; #endif

连载《一个程序猿的生命周期》-10.在项目中忍受病魔的折磨

2009年是俺的本命年,人家都说本命年十有八九都不是太好,我也未能幸免.从年初开始,感觉身体就特别虚弱,打篮球跑会儿就会感觉特别累,这种情况还在进一步恶化,比我想象的要严重的多. 这一年也是我参加工作的第三个年头,有了理论基础,有了扎实的技术,正是要施展拳脚的时候.我是有强烈意愿.目标和报复的人,也是脚踏实地干事的人,在这一年,不管在工作上,还是在身体上,都面临着严峻的挑战和考验. 3月初的时候,得到A城市有一个集团数据集成的项目,大概4月中旬就要去现场.以前也亲自参与过数据集成的项目,干的是一

C语言实现--&gt;&gt;对输入字符串中各类型出现次数的统计

问题描述: 编写一个程序统计输入字符串中:各个数字.空白字符.以及其他所有字符出现的次数. 代码实现: #include <stdio.h> #include <ctype.h> int main() {  int other=0;  int space=0;  int a[10]={0};  int i=0;  int ch=0;  while ((ch=getchar())!=EOF)  {   /*    //isspace库函数---判断输入字符ch是不是空,如果是,if条

一位Erlang程序猿的自白

12.00 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority

《疯狂的程序猿》 -- 什么是真正的程序猿?

什么是真正的程序猿? <疯狂的程序猿>书里说的 1.真正的程序猿是,值得尊敬的. 程序猿的双手是魔术师的双手. 他们把枯燥无味的代码变成了丰富多彩的软件. 2.真正的程序猿是.当你房子,车子,妹子都有了,你还在coding!那你是真的程序猿 3.真正的程序猿是,当编码能给你带来无穷的激情的时候 4.真正的程序猿是.做梦被改动需求吓醒! 5.真正的程序猿是.把编程融入到生活中,通过代码解决你生活中遇到的一些问题. 6.真正的程序猿是.能够非常快的学习一门语言. 7.真正的程序猿是,能在写代码的时

OSChina 娱乐弹弹弹——程序猿眼中的女人

程序猿,整天跟操作系统,编程语言,各种打交道,那么程序猿眼中的女人是什么样子的呢? 有程序猿曾经用操作系统形容过各种类型的女人,有程序猿用编程语言描述各种星座的女人. 小编找到了几个版本,请看: 编程语言 NO1: 计算机语言的实质其实是为了让人类能够更好与计算机打交道,最终结果都是通过编译成二进制代码或通过解释器转译成二进制代码的形式,由计算机来 执行.而二进制就是 0 和1,假设 1 代表男人,0 代表女人,那么瞬间就可以发现世界就变成了一台大"计算机".而爱情和情爱也可以看成是

程序猿菜鸟必备——作为独立开发人员怎样系统的学习编程

接触一个行业,前期最好来一个系统的学习,有完整的框架一点一点的把基础吃透,不能左一耙子,右一锄头.以我的从业经验给大家分享怎样系统的学习编程开发,刚入坑的程序猿菜鸟注意了,迅速占据高地.迅速收藏了. 整体大致分为下面几类: A.教材上的知识 这部分内容来自计算机专业的课程教材.也有可能会涉及一部分来自其它相关专业或者相关课程的内容. B.编程语言 每个程序猿仅仅有在会使用一门语言的情况下才有可能从事开发工作,所以学习并掌握一门语言是最低要求了. C.SDK 光有一门语言是不够的,从事不论什么实际

30 个跟程序猿有关的成语

猿来如此 指程序员通过调试终于找到 bug 所在. 功成猿满 指项目大获成功,老板开始觉得程序猿人数太多,工作不够饱和. 左右逢猿 指需求评审会时,前后左右都是程序猿,舌战群猿,以一敌多的场面. 花好约猿 指花儿开得正好,周末无比美妙,增长黑客却约程序猿一起去公司加班. 自猿其说 指程序猿有一套自己的语言规范,和程序猿沟通时,必须按照其语言规范来说话. 心火燎猿 指程序猿内心愤怒,却因口才有限,一时间无力反驳的场景. 三朝猿老 指需求频繁变更三次后,程序猿的脸色以肉眼可见的速度开始衰老. 破竞难

[MarsZ]程序猿谈大学之为什么不推荐就业时做程序猿

这篇文章适合一切有志做一个程序猿的人,而不仅仅只是即将进入就业市场的大学生. “又到了毕业找工作的时候了,好多朋友打电话向我咨询要不要让孩子做程序员.作为一个业内资深人士,我觉得这不能一概而论!要辩证的看待这个问题,视孩子的具体情况,具体问题具体分析.譬如说,如果是亲生的,就尽量不要.” 以上是最近我以前的一个程序猿同事一条QQ说说,意思很明显,不推荐做程序猿.当然这个有调侃的味道. 为什么不推荐就业时去做一个程序猿呢?为了回答这个问题,我们先看一些引用. 百度百科告诉我们: