BOOL、sizeof

BOOL使用前需要声明

#include <stdbool.h>(这个头文件定义了bool,true,false等宏)

int a[5];

sizeof(a[5]),sizeof是关键字,求值是在编译时,sizeof(a[5])并不会报错,这个值并不存在,但是这里并没有真正去访问a[5]这个值,而是仅仅根据数组元素的类型来确定其值。

sizeof(变量\常量)

sizeof 变量\常量

sizeof(数据类型)

sizeof 数据类型——错误

*sizeof的作用

sizeof是c的运算符之一,用于获取操作数被分配的内存空间,以字节单位表示.

这里指的操作数,可以是变量,也可以是数据类型,如int,float等.所以就可以通过它来获取本地c库定义的基本类型的范围。

*sizeof的使用

1.对于一般变量,形式2种:sizeof a 或 sizeof(a);

2.对于数据类型,必须使用带括号的方式,如sizeof(int).

*size_t的说明

sizeof返回的必定是无符号整形,在标准c中通过typedef将返回值类型定义为size_t(即unsigned int,头文件stddef.h中定义)

strlen返回的也是无符号整形。

若用printf输出size_t类型时,C99中定义格式符%zd;若编译器不支持可以尝试%u或%lu/%zd.

*与strlen比较

sizeof,获取操作数占用的内存空间字节数,返回类型size_t;

strlen,获取字符数组实际使用的字节数,不包含数组结尾符‘\0‘,返回类型size_t;

如示:

#include <stdio.h> 
#include <string.h> 
int main(void) 
{    
     int a =1;  
     char b[4] ="aaa"; 
     printf("%zd %zd %lu\n",sizeof a,sizeof(int),sizeof a); 
     printf("%zd %zd\n",sizeof b,strlen(b)); 
     return 0; 
}

结果:

4 4 4 
4 3

时间: 2024-10-22 20:22:08

BOOL、sizeof的相关文章

程序猿之---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浪费内存,对内存敏感的程序使

程序猿之---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

bool、int、float、指针变量与“零值”比较的if语句

if语句是C++/C语言中最简单.最常用的语句,然而很多程序员用隐含错误的方式写if语句.本节以"与零值比较"为例,展开讨论. 这里是"零值"而不是"0" 4.3.1布尔变量与零值比较 [规则4-3-1]不可将布尔变量直接与TRUE.FALSE或者1.0进行比较. 根据布尔类型的语义,零值为"假"(记为FALSE),任何非零值都是"真"(记为TRUE).TRUE的值究竟是什么并没有统一的标准.例如Visua

(三)结构体指针、sizeof

(一)结构体指针定义 今天上班写了一段测试代码,结果在linux下编译出现段错误,刚开始一直找不到原因,后来找了度娘才搞懂了.我先贴出来第一次写的代码以及gcc编译器下报的错误: #include<stdio.h> typedef struct { int a; char str; int b[5]; }St; int main() { St * Ds; Ds -> a = 5; Ds -> str = 'a'; Ds -> b[5] = 2; printf("a

checked、is、as、sizeof、typeof运算符

//--------------------------------checked防止溢出            byte b = 255;            checked            {                b++;            }            Console.WriteLine(b.ToString());//byte类型只包含0~255,加上checked所以会抛出异常 //is运算符,检查对象是否与特定的类型兼容            int

lambda表达式Expression&lt;Func&lt;Person, bool&gt;&gt; 、Func&lt;Person, bool&gt;区别

前言: 自己通过lambda表达式的封装,将对应的表达式转成字符串的过程中,对lambda表达式有了新的认识 原因: 很多开发者对lambda表达式Expression<Func<Person, bool>> .Func<Person, bool>表示存在疑惑,现在就用代码举个简单列子 原代码: using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expres

python基础一整型、bool、字符串

1整型.bool.字符串 1.整型 --数字(int) ? 用于比较运算的 ? 32位 -2 ** 31 ~ 2 ** 31 -1 ? 64位 -2 ** 63 ~ 2 ** 63 -1 ? 基础运算符:+ - * / // ** % python2 整型 int -- log(长整型) / 获取的是整数 python3 整型 int -- / 获取的是浮点数(小数) 2.进制 ? 二进制 八进制 十进制 十六进制 ? 十进制与二进制转换: ? 十进制->二进制:除二整除取倒余法 ? 二进制->

Objective-C(NSString、BOOL、多文件开发)

NSString 表示oc当中的字符串类 %@是oc当中对象的格式符 printf不能打印oc当中的对象 通过stringWithFormat:这个类方法,打印格式化的字符串 例 int a = 10; NSString * str = [NSString stringWithFormat:@"身高是%i",a]; NSLog(@"%@",str); 通过NSSting当中的求长度的方法,计算字符串的长度 oc当中的求长度的方法,在打印时,是以各国的字符为单位.空格

黑马程序员————C语言基础语法二(算数运算、赋值运算符、自增自减、sizeof、关系运算、逻辑运算、三目运算符、选择结构、循环结构)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一讲  算数运算 C语言一共有34种运算符,包括了常见的加减乘除运算 1.加法运算+ 除开能做加法运算,还能表示正号:+5.+90 2.减法运算- 除开能做减法运算,还能表示符号:-10.-29 3.乘法运算* 注意符号,不是x,而是* 4.除法运算/ 注意符号,不是÷,也不是\,而是/ 整数除于整数,还是整数.1/2的值是0,这个并不是二分之一 5.取余运算% 什么是取余:两个整数相除之后