当前位置:首页 » 编程语言 » c语言中圆括符与方括符
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中圆括符与方括符

发布时间: 2022-04-04 00:58:50

c语言结构标识符后面的圆括号表示什么意思

c语言标示符由字母、下划线、数字组成,不能以数字开头
这是基础的知识
另外变量名中不可出现除“_”以外的符号,就像b选项中“.”

❷ 查找c程序中的基本语法错误如圆括号方括号花括号的不匹配,如单引号和双引号要能显示错误信息和错误行数

这个不是20分能解决的问题,牵扯的问题太多了。
如果只是圆括号、方括号、花括号不匹配的问题还好,可后面的“等”字把问题搞的复杂得多。
这样的话C语言里那么多东西,结构体,数组,变量类型,这些都是基本语法错误,可真要面面俱到也就是写一个预编译器了。

❸ C语言运算符中圆括号是单目运算符还是双目运算符

() 单目 参数表 任何类型 任何类型 15 自左向右
[] 单目 数组下标 任何类型 任何类型 15 自左向右

http://liuyunfeng484.blog.163.com/blog/static/668317152009817739170/
这个里面有张运算符表,你可以参照上面的判断你所指的运算符是哪种类型的。

❹ 求一段c语言计算程序代码,要能正确处理里面运算符的优先计算顺序和圆括号的优先顺序。

看来这个问题还没有搞定啊,我来帮你搞定吧,稍等~
好了,现在搞定,发给你吧~
为了你方便看,就写在一个cpp文件里了,比较长,三百多行。我已经编译通过,也做了简单测试,没详细测,如果有bug,你就自己改一下吧。表达式输入完了之后直接回车,就出结果了,跟平时输入字符串一样。

/**********************************************
算术表达式求值的算符优先级算法
利用栈来实现括号匹配和表达式求值
算法的详细说明,请查看清华大学出版社《数据结构》,严蔚敏&吴伟民着,3.3节
***********************************************/
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#defineSTACK_INIT_SIZE100//存储空间初始分配量
#defineSTACKINCREMENT10//存储空间分配增量
#defineOK0
#defineERROR127

//定义一个顺序栈
typedefstruct
{
int*base;//在栈构造之前和销毁之后,base的值为NULL
int*top;//栈顶指针
intstacksize;//当前已分配的存储空间,以元素为单位
}SqStack;intInitStack(SqStack*S)
{
//构造一个空栈
S->base=(int*)malloc(STACK_INIT_SIZE*sizeof(SqStack));
if(NULL==S->base)
{//内存分配失败
returnERROR;
}
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
returnOK;
}


charGetTop(SqStack*S,char*element)
{
//若栈不空,取栈顶元素,用element返回
if(S->base==S->top)
{
returnERROR;
}
*element=*(S->top-1);
return*element;
}


intPush(SqStack*S,intelement)
{
//插入元素element为新的栈顶元素
if((S->top-S->base)>S->stacksize)
{//栈满,追加空间
S->base=(int*)realloc(S->base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(SqStack));
if(NULL==S->base)
{
returnERROR;
}
S->top=S->base+S->stacksize;
S->stacksize+=STACKINCREMENT;
}
*S->top++=element;
returnOK;
}


intPop(SqStack*S,int*element)
{
//若栈不为空,则删除栈顶元素,用element返回其值
if(S->top==S->base)
{
returnERROR;
}
*element=*(--S->top);
returnOK;
}


intPopOPTR(SqStack*S,char*element)
{
if(S->top==S->base)
{
returnERROR;
}
*element=*(--S->top);
returnOK;
}


//判断字符c是否在集合OP中
intInOP(charc,charOP[7])
{
for(inti=0;i<7;i++)
{
if(c==OP[i])
{
returnOK;
}
}
returnERROR;
}


//判断运算符的优先级
intCompare(inta,intb)
{
if('+'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'<';
case'/':
return'<';
case'(':
return'<';
case')':
return'>';
case' ':
return'>';
}
}
if('-'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'<';
case'/':
return'<';
case'(':
return'<';
case')':
return'>';
case' ':
return'>';
}
}
if('*'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'>';
case'/':
return'>';
case'(':
return'<';
case')':
return'>';
case' ':
return'>';
}
}
if('/'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'>';
case'/':
return'>';
case'(':
return'<';
case')':
return'>';
case' ':
return'>';
}
}
if('('==a)
{
switch(b)
{
case'+':
return'<';
case'-':
return'<';
case'*':
return'<';
case'/':
return'<';
case'(':
return'<';
case')':
return'=';
}
}
if(')'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'>';
case'/':
return'>';
case')':
return'>';
case' ':
return'>';
}
}
if(' '==a)
{
switch(b)
{
case'+':
return'<';
case'-':
return'<';
case'*':
return'<';
case'/':
return'<';
case'(':
return'<';
case' ':
return'=';
}
}
returnERROR;
}

//简单计算
intCalculate(intleft,charoper,intright)
{
intresult=0;
switch(oper)
{
case'+':
result=left+right;
break;
case'-':
result=left-right;
break;
case'*':
result=left*right;
break;
case'/':
result=left/right;
break;
}
returnresult;
}

/**********************************************
算术表达式求值的算符优先级算法,设OPTR和OPND分别为运算符栈和运算数栈
OP为运算符集合
**********************************************/
intmain()
{
SqStackOPTR,OPND;
intelement=0;
charOPTR_element;
intleftNum,rightNum;
charinput;//获取输入
charOP[7]={'+','-','*','/','(',')',' '};
InitStack(&OPTR);
Push(&OPTR,' ');
InitStack(&OPND);
printf("请输入表达式 ");
input=getchar();
while(' '!=input||' '!=GetTop(&OPTR,&OPTR_element))
{
inttemp=0;
if(isdigit(input))
{//如果是数字
ungetc(input,stdin);//返回给输入流
scanf("%d",&temp);
Push(&OPND,temp);//数字就进OPND栈
input=getchar();
continue;
}

if(OK==InOP(input,OP))
{
GetTop(&OPTR,&OPTR_element);
switch(Compare(OPTR_element,input))
{
case'<'://栈顶元素优先级低
Push(&OPTR,input);//运算符进OPTR栈
input=getchar();
break;
case'='://脱括号
PopOPTR(&OPTR,&OPTR_element);
input=getchar();
break;
case'>'://退栈,并将运算结果入栈
PopOPTR(&OPTR,&OPTR_element);
Pop(&OPND,&rightNum);
Pop(&OPND,&leftNum);
Push(&OPND,Calculate(leftNum,OPTR_element,rightNum));
break;
default:
printf("表达式括号不匹配 ");
returnERROR;
}//switch
}//if
else
{
printf("表达式内有未知字符,即将退出 ");
returnERROR;
}
}//while
intvalue;
Pop(&OPND,&value);
printf("结果=%d ",value);
returnOK;
}//end

❺ C语言中,条件运算符和圆括号那个优先等级高

括号优先级高,但是比如a==0&&(b==1)这个还是先计算a==0,如果是(1+2)*3当然是先1+2
你要了解原理去看看计算机是怎么处理这些式子的,和堆和栈有关系,这样你这么就理解了,就不会搞错。

❻ c语言中的界符有哪些

  1. 界符就是限制界限所用,一般都是成对的双界符,如 () { } [ ] " " ' ' 等。

  2. C语言双界符包括以下几种符号:
    花括符{和}
    尖括符<和>
    圆括符(和)
    方括符[和]
    注释符/*和*/
    双引号"
    单引号'

❼ 编写程序,查找C语言中的基本语法错误,如圆括号,方括号,花括号的不匹配,单引号,双引号等。

记得大学学编译原理的时候做过一个C语言编译器,能够词法分析,语法分析,语义分析,还能调用C编译器生成exe
现在都忘差不多了

❽ C语言里圆括号算作运算符吗

是运算符 单目 优先级是1
[ ]数组下标 ( )圆括号 .成员选择 ->成员选择 ++ --(后自增 自减)都是优先级为1的单目运算符

❾ 汇编中圆括号与方括号的区别

方括号是指以方括号里的值为地址取值。圆括号是用来做偏移的,意思就是圆括号里面的值要加上外面的值