3.整数表达式

本文介绍了使用Python进行整数运算的特点,特别是使用int定义变量时的取整规则,并强调了条件判断中等号与赋值操作的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当使用int 定义时,得到的结果到时整数,运算是向下取整的,与python差异不大。

注意等号“==”与赋值号“=”的区别。


如果错把条件中的 == 写成 = 在VS2013 中会出错,书中认为赋值句用真。


转载于:https://my.oschina.net/xueyang/blog/204746

1. 整数表达式的正规式词法: 整数:数字(一位或多位),例如:0, 123, 9999。 运算符:+,-,*,/,(,),例如:+,-,*,/,(,)。 空格:空格字符,例如:空格。 2. 整数表达式的文法: <expr> → <term> | <expr> + <term> | <expr> - <term> <term> → <factor> | <term> * <factor> | <term> / <factor> <factor> → <integer> | ( <expr> ) <integer> → <digit> | <integer> <digit> <digit> → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 3. 用Flex和Bison生成整数表达式的计算程序: Flex用来生成词法分析器,通过正规式词法分析输入的字符串,生成token,用于Bison进行分析。 Bison用来生成语法分析器,通过文法分析token串,生成抽象语法树,根据计算规则计算表达式的值。 代码示例: Lexer.lex %{ #include "Parser.tab.h" %} %% [0-9]+ {yylval.ival = atoi(yytext); return INTEGER;} [-+*/()] {return *yytext;} [ \t\n] {/* ignore */} Parser.y %{ #include <stdio.h> %} %token INTEGER %% expr: term | expr &#39;+&#39; term { $$ = $1 + $3; } | expr &#39;-&#39; term { $$ = $1 - $3; } term: factor | term &#39;*&#39; factor { $$ = $1 * $3; } | term &#39;/&#39; factor { $$ = $1 / $3; } factor: INTEGER | &#39;(&#39; expr &#39;)&#39; { $$ = $2; } %% int main() { yyparse(); return 0; } 注意:在编译之前需要把上述两个文件进行合并,生成的命令方式如下: flex Lexer.lex bison -d Parser.y gcc Lexer.lex.c Parser.tab.c -o calculator 编译后就可以测试整数表达式的计算程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值