C/C++ 中的1LL

举个例子

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll ans = -1;
    ans += pow(2,63);
    printf("%lld\n", ans);//9223372036854775807

    ans = -1;
    ans += (1LL<<63);
    printf("%lld\n", ans);//9223372036854775807

    ans = -1;
    ans += (1<<63);
    printf("%lld\n", ans);//-1
    return 0;
}

我们可以看到同样是加上263 如果用位移运算符,1后面没有加LL,那会得出一个错误的答案(-1)。

在得到的结果会爆int的时候,记得用LL

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PL/0编译程序的语法分析主要采用递归下降分析法,具体实现如下: 1. 定义语法规则,例如: ``` <程序> ::= program <标识符> ; <分程序> . <分程序> ::= <常量说明部分> <变量说明部分> <过程说明部分> <语句> ``` 2. 定义相应的函数来实现语法规则的每个非终结符,例如: ```c++ void program(); // 处理 <程序> void constDeclaration(); // 处理 <常量说明部分> void varDeclaration(); // 处理 <变量说明部分> void procedureDeclaration(); // 处理 <过程说明部分> void statement(); // 处理 <语句> ``` 3. 在每个函数,按照语法规则的顺序,调用相应的函数或处理相应的终结符,例如: ```c++ void program() { // 匹配 program match(PROGRAM); // 匹配标识符 match(IDENT); // 匹配 ';' match(SEMICOLON); // 处理 <分程序> block(); // 匹配 '.' match(PERIOD); } ``` 4. 在匹配终结符时,需要检查当前符号是否与预期符号相符,如果不符则报错并跳过一些符号,例如: ```c++ void match(int symbol) { if (currentSymbol == symbol) { currentSymbol = getNextSymbol(); } else { error(); } } ``` 5. 在处理非终结符时,需要按照语法规则的顺序调用相应的函数,例如: ```c++ void block() { // 处理 <常量说明部分> constDeclaration(); // 处理 <变量说明部分> varDeclaration(); // 处理 <过程说明部分> procedureDeclaration(); // 处理 <语句> statement(); } ``` 以上就是使用C/C++语言编写PL/0编译程序的语法分析程序的基本步骤。除了递归下降分析法,还有其他的语法分析方法,例如LR分析法、LL分析法等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值