表达式从左向右求值(所有运算符的优先级都一样,仅包括+ - * /)

#include <stdio.h>

int main(void){
    float a, b;
    char ch;

    printf("Enter an expression:");
    scanf("%f", &a);
    printf("%.3f", a);
    ch = getchar();
    putchar(ch);
    while (ch != ‘\n‘) {
        scanf("%f", &b);
        printf("%.3f", b);
        switch(ch){
            case ‘+‘:
                a += b;
                break;
            case ‘-‘:
                a -= b;
                break;
            case ‘*‘:
                a *= b;
                break;
            case ‘/‘:
                a /= b;
                break;
        }
        ch = getchar();
        putchar(ch);
    }
    printf("%.3f\n", a);
    return 0;
}

例如输入:1+2.5*3

输出:10.5

时间: 2024-09-30 23:58:23

表达式从左向右求值(所有运算符的优先级都一样,仅包括+ - * /)的相关文章

没做过编译器就是被人欺,从一道变态的i++题猜编译器的行为(表达式从左往右扫描,同一变量相互影响)

首先不要被人蒙了,如果是这样,根本编译不过: int i=1; int b=i+++++i; printf("%d %d\n", b ,i); Mingw报错:error: lvalue required as increment operand (好像是说,++缺左值,这里的++是上题的第三第四个加号) VC2010报错:error C2105: '++' needs l-value --------------------------------------------------

没亲手做过编译器就是被人欺,从一道变态的i++题猜编译器的行为(表达式从左往右扫描,同一变量相互影响)

首先不要被人蒙了,如果是这样,根本编译不过: int i=1; int b=i+++++i; printf("%d %d\n", b ,i); Mingw报错:error: lvalue required as increment operand (好像是说,++缺左值,这里的++是上题的第三第四个加号) VC2010报错:error C2105: '++' needs l-value --------------------------------------------------

C语言对表达式的求值顺序不是明确规定的

讨论区看到的 WA来自那些递归下降求解的代码. 第一种情况,使用|| 和 &&: 例如s为所给串 int getval() { switch(s[c_s++]) { case 'p': return (value & (1 << 0))? 1:0; case 'q': return (value & (1 << 1))? 1:0; case 'r': return (value & (1 << 2))? 1:0; case 's'

表达式的求值顺序

代码: #include <stdio.h> #include <stdlib.h> #include <stdbool.h> // C语言保证逻辑表达式是从左至右求值 int main(void) { // printf("Left") == 4 // printf("Right") == 5 if (!printf("Left") && printf("Right")) 

序列点在C语言表达式求值中的作用

摘要: 本文开创性地分析了序列点在C语言表达式求值中的作用:序列点左边的操作数要先于其右边的操作数求值.讨论了逗号操作符,.逻辑与操作符&&.逻辑或操作符||和条件操作符?:的问号处需要序列点的原因.举例分析了序列点在表达式求值中的作用. 关键字:序列点 表达式求值 C语言 C语言作为一种主流程序设计语言,许多编程语言如Java.C++.C#都借鉴了它的语法.C语言也是一种很适当的程序设计入门的教学语言,国内大专院校的许多专业都开设了这门课程并且大多将其作为第一门程序设计语言课程,同时C语

栈的典型应用-表达式求值【转】

本文转载自:http://www.voidcn.com/blog/lub0807/article/p-1510616.html 栈的一个应用是求四则运算表达式的值,这里的表达式包含数字.加减乘除4种运算符,以及小括号. 由于输入是一个字符串,因此解决这个问题需要以下3个步骤: 1.输入字符串转化为中缀表达式: 2.中缀表达式转化为后缀表达式: 3.后缀表达式求值. 现在表达式为:9 + ( 3 - 1 )* 3 + 10 / 2 ,先看一下运行结果: 首先解释一下中缀表达式和后缀表达式的概念.所

NYOJ-35-表达式求值

描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧. 比如输入:"1+2/4=",程序就输出1.50(结果保留两位小数) 输入 第一行输入一个整数n,共有n组测试数据(n<10). 每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个运算式,每个运算式都是以"="结束.这个表达式里只包含+-*/与小括号这几种符号.其中小括号可以嵌套

前缀、中缀、后缀表达式及其求值

它们都是对表达式的记法,因此也被称为前缀记法.中缀记法和后缀记法.它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前:中缀和后缀同理. 比如: (4 + 5) × 6- 7 就是中缀表达式 - × + 4567 前缀表达式 45 + 6×7 - 后缀表达式 中缀表达式(中缀记法) 中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间.中缀表达式是人们常用的算术表示方法. 虽然人的大脑很容易理解与分析中缀表达式,但对计算机来说中缀表

刁肥宅详解中缀表达式求值问题:C++实现顺序/链栈解决

1. 表达式的种类 如何将表达式翻译成能够正确求值的指令序列,是语言处理程序要解决的基本问题,作为栈的应用事例,下面介绍表达式的求值过程. 任何一个表达式都是由操作数(亦称运算对象).操作符(亦称运算符)和分界符组成的.通常,算术表达式有3种表示: ①中缀(infix)表示:<操作数><操作符><操作数>,如A+B. ②前缀(prefix)表示: <操作符><操作数><操作数>,如+AB. ③后缀(postfix)表示: <操作