C语言正负数表示及负号处理技巧

创始人
2024-12-17 11:14:06
0 次浏览
0 评论

c语言一正一负怎么表示的

C语言有两种数据类型,一种是整型,另一种是浮点型。
整数类型通常用原始代码表示,浮点类型通常使用IEEE754标准编码。
原码中的整数代表正数和负数。
最高位为符号位,用8位二进制数来表示1和-1。
1的二进制数是00000001//最高位是符号位,0代表正数1代表负数10000001//这个代表-1​浮点数的IEEE754编码,使用的格式类似于(-1)^s*M*2^E,其中s为符号位,M为有效位数,E为指数符号s位占1位,如果为0,则(-1)的0次方为1,表示为正数。
如果s位为-1,则表示是负数。

C语言负号问题

确定字符“-”的唯一方法是在程序内。
您需要能够区分“-”是减号还是减号。
更简单的方法是在输入公式时指定格式,并将所有负数用()括起来。
这使得更容易确定该数字是否为负数。
当然,你也可以定义其他格式。
如果不指定格式,则必须根据前面的“-”是否为“)”来确定。
,对于“+-*/”符号,“-”是减号。
如果没有则表示起始编号,“-”为减号。
你必须等待并仔细考虑。
=======下面是一个例子==============#include"stdafx.h"#include#include#include<math.h>#definemaxlen100typedefstructnode{charch;intdata;structnode*next;}LinkList;//保存表达式的链表intfunc(){LinkList*ta,*tb,*tc,*td;ta=La;tc=Lb;for(intn=0;nnext;}tb=ta;for(n=0;n下一个;}ta->下一个=tb;for(n=0;nnext;}td=tc->next;tc->next=}typedefstruct{charstack[maxlen];inttop;}Stack1;typedefstruct{intstack[maxlen];inttop;}Stack2;intIn(charc){if((c=='+')||(c=='-')||(c=='*')||(c=='/')||(c=='#')||(c=='(')||(c==')')||(c=='A')||(c=='S'))return1;elsereturn0;}voidInitStack1(Stack1*S){S->top=-1;}voidInitSack2(Stack2*S){S->top=-1;}voidPush1(Stack1*S,charch){S->top++;S->stack[S->top]=ch;}voidPush2(Stack2*S,intch){S->top++;S->stack[S->top]=ch;}charPrecede(charch1,charch2){//比较两个运算符Chach的优先级;//ch为<表示ch1较低优先级高于ch2,反之亦然switch(ch1){case'+':if((ch2=='*')||(ch2=='/')||(ch2=='('))ch='<';eltech='>';break;case'-':if((通道2=='*')||(ch2=='/')||(ch2=='('))ch='<';eltech='>';break;case'*':if((ch2=='('))ch='<';eltech='>';break;case'/':if((ch2=='('))ch='<';eltech='>';break;case'#':if(ch2=='#')ch='=';eltech='<';break;case'(':if(ch2==')')ch='=';elsech='<';中断;}return;}voidPop1(Stack1*S,char*p){*p=S->Stack[S->top];S->top--;}voidPop2(Stack2*S,int*p){*p=S->Stack[S->Top];S->Top--;}charGetTop1(Stack1*S){returnS->Stack[S->Top];}intGetTop2(Stack2*S){returnS->stack[S->top];}voidprint1(Stack1*s){printf("运算符栈:");inth=s->top;while(h!=-1){printf("%c",s->stack[h]);h--;}printf("\n");}voidprint2(Stack2*s){printf("数字堆栈:");inth=s->top;while(h!=-1){printf("%c",s->stack[h]);h--;}printf("\n");}intOperate(inta,chartheta,intb){//操作a和bints;switch(theta){case'+':s=a+b;break;case'-':s=a-b;break;case'*':s=a*b;break;case'/':s=a/b;break;}返回;}LinkList*CreatList(){LinkList*H,*s,*r;H=(LinkList*)malloc(sizeof(LinkList));H->next=NULL;r=H;charc;c=getchar();while(c!='#'){s=(LinkList*)malloc(sizeof(LinkList));s->ch=c;s->next=NULL;r->next=s;r=s;c=getchar();}s=(LinkList*)malloc(sizeof(LinkList));s->ch=c;s->next=NULL;r->next=s;r=s;returnH;}LinkList*Change(LinkList*H){LinkList*p,*前;p=H->下一个;前=H;while(p!=NULL){if(In(p->ch)){p=p->next;pre=pre->next;}else{//将字符转换为数字intm=0,n;while(!In(p->ch)){n=p->ch-'0';m=10*m+n;LinkList*u=p;p=p->下一个;if(!In(p->ch)){pre->next=p;free(u);}else{u->data=m;u->ch='@';pre=pre->next;}//@将此节点的符号标记为数字}}}returnH;}LinkList*jisuan(LinkList*H){//对链表中的数据进行初步计算LinkList*p,*U,*pre;p=H->next;pre=H;inta;while(p!=NULL){if(p->ch!='A'&&p->ch!='S'){pre=pre->next;p=p->next;}else{if(p->ch=='A')a=fabs(p->下一个->数据);elsea=sqrt(p->下一个->数据);p->下一个->数据=a;U=p;p=U->next;pre->next=p;free(U);}}returnH;}intmain(intargc,char*argv[]){printf("*********************************************************************************************”);printf("\n");Printf("欢迎来到模拟计算程序\n");printf("****************************************************************************************************************");Stack1OPTR1,*OPTR=&OPTR1;Stack2OPTR2,*OPND=&OPTR2;InitStack1(OPTR);Push1(OPTR,'#');//OPTR'#'推入stackInitStack2(OPND);charc,x,theta;inta,b,s;Printf("请输入以#:结尾的表达式。
");LinkList*H,*p,*qH=CreatList();H=变化(H);H=吉算(H);p=H->next;c=p->ch;while((c!='#')||(GetTop1(OPTR)!='#')){//#也是表达式的截止字符if(c=='@'){s=p->数据;Push2(OPND,s);p=p->下一个;c=p->ch;}elseswitch(Precede(GetTop1(OPTR),c)){case'<':Push1(OPTR,c));p=p->next;c=p->ch;break;case'=':Pop1(OPTR,&x);p=p->下一个;c=p->ch;break;case'>':Pop1(OPTR,θ);Pop2(OPND,&b);Pop2(OPND,&a);Push2(OPND,Operate(a,theta,b));break;//Operate后继续判断C因此有不需要getchar()}}s=GetTop2(OPND);printf("结果是:");printf("%d\n",s);return0;}
热门文章
1
C语言字符串常量解析:区别、用途及存储方... 什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...

2
C语言printf函数:格式字符串与输出... printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...

3
Excel技巧:计算字符串起始位置与合并... 如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...

4
Python发音全解:掌握正确的发音方法... python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...

5
字符与字符串:编程中的基础文本类型解析 字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...

6
Python编程语言:多领域应用与开发优... Python的作用是什么?Python是一种跨平台计算机编程语言,是ABC语言的...

7
深度解析:C语言编程特点与应用领域 什么叫c语言C语言是一种编程语言。C编程语言应用广泛,具有以下特点和特点:1.语...

8
Java全解析:跨平台编程语言的魅力与多... java是什么Java是一种功能强大的编程语言,被称为“一次编写,随处运行”模型...

9
C语言赋值与相等运算符的区别解析 c语言中=和==有什么区别?1.各种含义:“=”表示赋值。它的功能是将表达式的值...

10
C语言实现字符串next数组:原理与实例... 如何用C语言编写一个字符串的next数组?对于字符串“abcdeabc”,可以通...