C语言用小括号把数组名包起来是什么意思呢?

作者&投稿:斋韦 (若有异议请与网页底部的电邮联系)
~ evbit 是一维数组名,也可以理解为 指向 整数 的指针。
(unsigned char *)evbit :将指针evbit 强制转换为 字节指针
((unsigned char *)evbit)[i] 把字节指针(unsigned char *)evbit当做数组名,取第i个字节。
(unsigned char *)evbit 用括号括起来,是为了保证运算符的优先级不出错,先进行强制类型转换运算。

这是强制类型转换,语法是  (指定类型)变量,效果是将其他类型的变量,强制转换成指定类型。

为什么要用强制类型转换?c语言中,有隐含的类型转换和强制转换两大类,隐含的是低类型向高类型转换,例如char 可以无条件转换成int,这种转换不需要这个语法,也不会发生错误。

反过来,int转换成char,可能丢失精度,就需要强制类型转换。

此外,不同类型的指针之间,都是需要强制类型转换,这可能和你想的不太一样:char可以无条件转换成int,那char*为啥不能隐含转换int*,肯定是不能,因为指针++运算的步长由它指向的数据类型决定;

那同样内存大小的类型指针,也不能吗?也不能,char和unsigned char区别是有无符号,实际上是他们的值域不同,一个是-128~127,一个是0~255,类型转换,会发生错误。

以上情况,隐含转换有发生错误的可能性,而且还很大,所以编译器不会放过这种错误,会导致编译失败。

这种情况下,如果你确信这个转换是正确的,那么就需要一种语法告诉编译器,这就是强制类型转换语法。

下面回答你的具体问题,把指向char的指针,强制转换成指向unsigned char的指针,其结果是下标运算([i])将得到unsigned char类型的数,而不再是char类型的数,它们的值域不同。




c语言对数组初始化时可以使用常量表达式吗例a[10]={2x5,2,4}吗途中...
a[10]={2*5,2,4} 允许用 表达式 2*5, 它表示 a[0]=2*5;a[1]=2;a[2]=4;第38题,int m[10]={ }; 语法错,花括号里不能是空的。int m[2]={0,1,2}; 数组大小是2,但给了3 个数。int m[10]=(0,0,0,0);用了小括号,语法错。余下的 c 的语法正确,它...

c语言数组规则
1.1 一维数组的定义、初始化和引用 1.一维数组的定义方式为:类型说明符 数组名[常量表达式](1)数组名的命名方法与变量名相同,遵循标识符命名规则;(2)数组是用方括号括起来的常量表达式,不能用圆括号;(3)常量表达式表示数组元素的个数,即数组的长度,数组的下标从0开始,下标的最大值为:常量...

c语言中的表达式能不能用中括号
。。。只有小括号,没有中括号,没有大括号,全部用小括号,内层的小括号优先级高

数组括号里0是什么意思
在编程语言中,数组是一种常见的数据类型,用于存储一组有序的数据。数组通常用中括号来表示,例如:array[0]。在这里,中括号中的数字表示数组的下标,也就是说,数组的每个元素都有一个对应的下标。而对于数组括号里的0,它实际上表示数组的第一个元素。数组下标从0开始,而不是从1开始,这是编程...

为什么数组用大括号和双引号赋值结果不一样
用大括号为数组赋值,只限于声明静态数组时: int a[10] = {0}; 这样是可以的,但是在除了声明以外的时候,都是不符合语法的 int a[10]; a = {0}; \/\/错误! a[5] = {0]; \/\/错误!

关于c语言数组的方括号中能不能使用变量的问题。
关于c语言数组的方括号中能不能使用变量的问题。  我来答 1个回答 #热议# 作为女性,你生活中有感受到“不安全感”的时刻吗?好学者百科 2022-12-11 · 百度认证:北京惠企网络技术有限公司官方帐号 好学者百科 科技生活门户网站,探索发现百科全书。 向TA提问 ...

C语言定义数组时花括号里只有一个值
是因为输出语句只写了一个,或者没有写达成条件是再次执行。当只写了一个输出语句时,系统执行后只输出设置的目标值,就只有一个值,没有写再次执行,那么代码运行执行第一遍之后会自动停止,不会再继续执行,也就会出现只有一个值的情况。定义是一个汉语词语,拼音是dìngyì,英文是Definition,原指对...

c语言字符数组使用方法
即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\/0' )。2、字符数组与字符串 在c语言中,将字符串作为字符数组来处理。(c++中不是)在实际应用中人们...

C语言中中括号用什么表示啊?
你的意思可能是,比如数学里有个表达式:{[(1+2)*2+3]+5}*5,那么()叫小括号、【】叫做中括号、{ }叫大括号,对吧?C语言中是没有中括号这种说法,全部都只用()小括号表示,比如要把上面那个数学表达式表示成C语言的表达式时,只需把所有的中括号和大括号换成小括号:(( (1+2)*2+3...

关于c语言数组的方括号中能不能使用变量的问题。
方括号里必须是一个大于零的整数常量或者常量表达式。常量表达式(const experssion):是指值不会改变 并且在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。const int a =1;...

泾县17237633438: c语言数组 -
员诸大黄: 声明数组的语法为在数组名后加上用方括号括起来的维数说明.如: int day[10]; 这条语句定义了一个具有10个整型元素的名为day的数组.这些整数在内存中是连续存储的.c语言在编译的时候会根据你的数组的声明在内存中开辟出一段连续的...

泾县17237633438: (初学C)数组(头疼) a[10];中用方括号括起来是1,叫下标(名字,代号)2,是下标(类别,用小字写在左下角)
员诸大黄: 方括号中的数字就是下标. 出现在定义中称为数组的size,即大小.

泾县17237633438: c语言编程中c[5]什么意思 -
员诸大黄: 那是一个数组,名字是c,当然你也可以用其他名字命名,括号里面的5是用来说明数组的大小,也就是长度,为5个字节,里面可以放五个自己的内容

泾县17237633438: C语言宏定义里,用小括号中加花括号括起来的代码块,这种形式的宏定义理解不了 -
员诸大黄: 相当于#define myfunc(x) ({x=x+10; x - 1;}) 返回的就是x-1的结果 使用方法: aa = myfunc(bb) 或者 if (myfunc(bb))

泾县17237633438: C语言 注释的地方 为什么要加括号 详细的说下哈 不加就不行 为什么 要加啊 -
员诸大黄: 注释指的括号是大括号,也就是这两个(注释前面那两个) for(a = 1; a <= 5; a++) {/*这个括号*/ for(b = 1; b <= 5-a; b++)printf(" "); printf("********\n"); }/* 这个括号*/ 因为如果没有这两个括号,那么a循环就和b循环一样只操作一个步骤了,...

泾县17237633438: c++语言中小括号有几种作用?中括号有几种作用? -
员诸大黄: 小括号:函数,循环控制.表达式控制等 中括号:数组.内存申请 大括号:块区分

泾县17237633438: c语言中定义数组可以用小括号吗? -
员诸大黄: 不可以,

泾县17237633438: %在C语言中什么意思? -
员诸大黄: 大括号{ }用于定义函数体,构成复合语句(语句块)、声明联合(union)及结构体变量.也用于初始化数组、结构体等类型的变量. 中括号[]用于指明数组下标;在声明数组时,用于确定数组长度. 小括号用于声明函数参数列表,改变表达式...

泾县17237633438: C语言一个函数内直接用花括号括起一段代码有什么用? -
员诸大黄: 第二个{} 用来限定花括号中变量的作用域,使其不影响外面 例如:1 2 3 4 5 6 7 8 9 10 11 12 13intmain() {inta = 1;{inta = 2; // 此处不报错4102cout << a << endl;}cout << a << endl;//int a = 3; // 此处报错:"a":重定义;多次初始化1653a = 3;cout << a << endl;return0; } 输出: 2 1 3

泾县17237633438: C语言中怎么定义大括号! -
员诸大黄: .. 这两个大括号,表示把里面的东西包起来了. .就可以限制变量的作用范围......里面的顺序还是和外面一样呀..

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网