教程:Cpp关键字/标点/类型/转译序列/优先级别摘录.

这篇博客总结了C++中的逻辑运算规则、转义字符、C和C++的关键字、标点符号、基础数据类型以及运算符的优先级别和关联性。博主提到笔记格式可能因Markdown支持问题而显得混乱,但提供了详细的内容供读者参考学习。

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

C++数据类型运算符和表达式中常见基本标准简单总结。

PS:笔者一直是用OneNote和原生Markdown记所有笔记,但是Octopress对Markdown原生格式的支持似乎不是很友好(sad..),格式会有些乱,过段日子窝会把md文件打包上来,谢谢理解ww!!

逻辑运算规则

ab!aa&&ba//b
falsefalsetruefalsefalse
falsetruetruefalsetrue
truefalsefalsefalsetrue
truetruefalsetruetrue

转义字符

    
换行符 \n横向制表符 \t报警(响铃)符 \a纵向制表符 \v
退格符 \b双引号 \"反斜线 \问号 \?
单引号 \’回车符 \r进纸符 \f

C语言原有关键字:

auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

C++新增关键字:

and dynamic_cast operator true
and_eq explicit or try
asm export or_eq typeid
bitand false private typename
bitor friend protected using
bool inline public virtual
catch mutable reinterpret_cast wchar_t
class namespace static_cast xor
compl new template xor_eq
const_cast not this
delete not_eq throw

C++标点符号:

! % ^ & * ( ) – + = { } | ~
[ ] \ ; ‘ : “ < > ? , . / #

C++ 语言的基础类型

类别 类型 内容 整数 char 类型 char 是通常包含基本执行字符集成员的整数类型 - 默认情况下,这是 Microsoft C++ 中的 ASCII。

    C++ 编译器将 char、signed?char 和 unsigned?char 类型的变量视为不同类型。char 类型的变量将提升到 int,就像它们在默认情况下是 signed?char 类型一样,除非使用 /J 编译选项。 在这种情况下,它们被视为 unsigned?char 类型并提升为 int(没有符号扩展)。
bool    bool 类型是可以具有 true 或 false 这两个值之一的整数类型。 其大小未指定。
short   short?int 类型(或 short)是大于或等于 char 类型的大小但小于或等于 int 类型的大小的整型类型。

    ?short 类型的对象可声明为 signed?short 或 unsigned short。Signed short 是 short 的同义词。
int int 类型是大于或等于 short?int 类型的大小但小于或等于 long 类型的大小的整数类型。

    ?int 类型的对象可声明为 signed?int 或 unsigned?int。Signed?int 是 int 的同义词。
__int8, __int16, __int32, __int64, __int128 固定大小的整数 __int``n,其中 n 是整数变量的大小(以比特为单位)。 (__int8、__int16、__int32、__int64 和 __int128 是 Microsoft 专用的关键字。 并非所有类型在所有体系结构上都可用。)
long    long 类型(或 long?int)是大于或等于 int 类型的大小的整数类型。

    ?long 类型的对象可声明为 signed?long 或 unsigned?long。Signed?long 是 long 的同义词。
long?long   大于无符号 long。

    ?long long 类型的对象可声明为 signed?long long 或 unsigned?long long。Signed?long long 是 long long 的同义词。
wchar_t, __wchar_t  wchar_t 类型的变量指定宽字符或多字节字符类型。 默认情况下,wchar_t 是本机类型,但可以使用 /Zc: wchar_t- 使 wchar_t 成为 unsigned short 的 typedef。__wchar_t 类型是本机 wchar_t 类型的 Microsoft 专用同义词。

    在字符或字符串文本前使用 L 前缀可指定宽字符类型。

浮点 float float 类型是最小的浮点类型。 double double 类型是大于或等于 float 类型的大小但小于或等于 long?double 类型的大小的浮点类型。

    Microsoft 专用:long double 和 double 的表示形式完全相同。 但是,long double 和 double 是不同的类型。
long double long?double 类型是大于或等于 double 类型的浮点类型。

C++ 运算符的优先级别和关联性

运算符说明 运算符 Group 1 precedence, no associativity
范围解析 :: Group 2 precedence, left to right associativity 成员选择(对象或指针) . or –> 数组下标 [ ] 函数调用 ( ) 后缀递增 ++ 后缀递减 –– 类型名称 typeid( ) 常量类型转换 const_cast 动态类型转换 dynamic_cast 重新解释的类型转换 reinterpret_cast 静态类型转换 static_cast Group 3 precedence, right to left associativity 对象或类型的大小 sizeof 前缀递增 ++ 前缀递减 –– 二进制反码 ~ 逻辑“非” ! 一元求反 - 一元加 + address-of & 间接寻址 * 创建对象 new 销毁对象 delete Cast Cast: () Group 4 precedence, left to right associativity 指向成员的指针(对象或指针) . or –> Group 5 precedence, left to right associativity 乘法 * 除法 / 取模 % Group 6 precedence, left to right associativity 添加 + 减法 – Group 7 precedence, left to right associativity 左移 << 右移 >> Group 8 precedence, left to right associativity 小于 < 大于 > 小于或等于 <= 大于或等于 >= Group 9 precedence, left to right associativity 相等 == 不相等 != Group 10 precedence left to right associativity 按位“与” & Group 11 precedence, left to right associativity
按位“异或” ^ Group 12 precedence, left to right associativity
按位“与或” | Group 13 precedence, left to right associativity
逻辑“与” && Group 14 precedence, left to right associativity
逻辑“或” || Group 15 precedence, right to left associativity
条件运算 ? : Group 16 precedence, right to left associativity
赋值 = 乘法赋值 *= 除法赋值 /= 取模赋值 %= 加法赋值 += 减法赋值 –= 左移赋值 <<= 右移赋值 >>= 按位“与”赋值 &= 按位“与或”赋值 |= 按位“异或”赋值 ^= Group 17 precedence, right to left associativity
引发表达式 throw Group 18 precedence, left to right associativity
逗号 ,


扩展阅读:https://msdn.microsoft.com/zh-cn/library/126fe14k.aspx


@本地磁盘姬

ohayou.aimo.moe

微博:@萌萌的本地磁盘w

Twitter:@AmyGreen

2018年05月20日

<think>嗯,用户现在遇到了一个问题,输入正确的账号密码却无法进入网页,并且显示了一个运行时错误,涉及webpack-dev-server的overlay.js文件。首先,我需要理解这个错误的具体情况。根据错误信息,这似乎是一个前端JavaScript运行时错误,可能是在开发环境中使用webpack-dev-server时出现的。用户提到“uncaught runtime errors”,这说明有未捕获的异常导致页面崩溃。 首先,我应该考虑错误的来源。错误堆栈指向了webpack-dev-server的overlay.js文件,这通常是开发服务器用来显示错误覆盖层的模块。可能的原因有很多,比如前端代码中的语法错误、资源加载失败、API请求错误,或者是webpack配置的问题。用户提到输入正确的账号密码却无法进入,这可能意味着登录请求失败,或者前端处理登录响应的代码存在问题。 接下来,我需要分析可能的原因和解决方案。首先,检查浏览器控制台的详细错误信息是关键,因为错误信息可能包含更具体的线索。用户可能需要打开开发者工具(F12)查看Console和Network标签页,看看是否有具体的错误信息或网络请求失败。比如,如果登录的API请求返回了4xx或5xx错误,或者前端在处理响应时抛出了异常。 另外,用户的环境可能是在开发环境中,因为涉及webpack-dev-server。这时候,热重载或模块热替换(HMR)可能出现问题,导致某些模块没有正确加载。这种情况下,重新启动开发服务器可能解决问题。此外,检查代码中的语法错误,特别是最近修改的部分,可能发现潜在的问题。例如,在登录表单的提交处理函数中,是否有拼写错误或未处理的Promise rejection。 还有一种可能是第三方库的版本不兼容或配置错误。如果最近更新了某些依赖项,可能会引发冲突。用户可以考虑回滚到之前的版本,或者检查package.json中的依赖版本是否兼容。此外,浏览器的缓存问题也可能导致旧代码运行,从而引发错误。清除缓存或使用隐私模式访问可能有助于排除这种情况。 另外,跨域问题(CORS)也可能导致API请求失败,尤其是在前后端分离的项目中。如果后端没有正确配置CORS头,前端请求会被浏览器阻止,从而导致运行时错误。用户需要检查后端服务器的CORS配置,确保允许前端域的请求。 此外,检查webpack的配置文件,特别是devServer的配置,是否有错误或遗漏。例如,publicPath设置不正确可能导致资源加载失败。还有,检查是否有自定义的webpack插件或loader引发了错误。 最后,如果以上步骤都无法解决问题,用户可能需要更详细地查看错误堆栈,或者提供更多的上下文信息,比如错误发生时的网络请求、具体的代码变更等。这有助于进一步诊断问题所在。 总结起来,解决这个问题的步骤可能包括:检查浏览器控制台的具体错误、验证API请求和响应、检查代码语法和逻辑错误、清除缓存、重启开发服务器、验证依赖版本和配置,以及检查CORS设置等。需要逐步排查,定位到具体的错误原因,然后针对性地解决。</think>--- 当网页在输入正确账号密码后仍无法进入,并出现 **`Uncaught Runtime Errors`** 且涉及 `webpack-dev-server` 的报错时,通常与前端代码逻辑、资源加载或开发环境配置相关。以下是分步排查和解决方案: --- ### **1. 查看完整错误日志(关键步骤)** - **操作**: 1. 在浏览器中按 `F12` 打开开发者工具。 2. 切换到 **Console(控制台)** 标签页,找到报错的完整堆栈信息。 3. 关注错误描述(如 `TypeError`, `Cannot read property...`, 或具体的 API 请求失败信息)。 --- ### **2. 检查前端代码逻辑(常见原因)** - **可能问题**: - 登录表单提交逻辑中的语法错误(如未处理的异步请求)。 - 页面路由配置错误,登录成功后跳转失败。 - 未正确处理 API 返回的异常状态(如 401、500 错误)。 - **解决**: 1. 定位到错误堆栈中提到的前端代码文件及行号(如 `LoginForm.jsx:45`)。 2. 检查对应代码的变量名、函数调用是否规范,尤其是最近修改的部分。 3. 在提交登录请求的代码段中添加 `try/catch` 捕获异常: ```javascript try { const response = await axios.post('/api/login', { username, password }); // 处理成功逻辑 } catch (error) { console.error('登录请求失败:', error); // 显示友好错误提示 } ``` --- ### **3. 验证网络请求是否成功** - **操作**: 1. 在开发者工具的 **Network(网络)** 标签页中,找到登录请求(通常为 `POST` 类型)。 2. 检查请求的响应状态码: - **200/201**:请求成功,但前端处理响应时出错(如 JSON 解析失败)。 - **4xx/5xx**:后端服务异常(需排查接口问题)。 3. 点击请求记录,查看 **Response(响应)** 内容,确认返回数据是否符合预期。 --- ### **4. 排查开发环境问题** - **可能原因**: - `webpack-dev-server` 热更新(HMR)失败,导致代码未正确加载。 - 第三方依赖版本冲突(如 `webpack`、`react` 版本不兼容)。 - **解决**: 1. 尝试重启前端开发服务器(如运行 `npm run dev` 或 `yarn start`)。 2. 清除浏览器缓存或使用无痕模式访问。 3. 检查 `package.json` 中依赖版本,尝试回退到稳定版本: ```json "dependencies": { "webpack-dev-server": "^4.15.1", "react": "^18.2.0" } ``` 4. 删除 `node_modules` 并重新安装依赖: ```bash rm -rf node_modules npm install ``` --- ### **5. 检查跨域问题(CORS)** - **现象**:登录请求因跨域被浏览器拦截。 - **验证**: 1. 在 **Network** 标签页中,若请求状态为 `CORS error` 或 `Blocked`,说明跨域配置错误。 2. 检查后端是否返回正确的 CORS 头: ```http Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, PUT Access-Control-Allow-Headers: Content-Type, Authorization ``` --- ### **6. 检查浏览器兼容性** - **可能问题**:代码中使用了较新的 JavaScript 语法(如 `Optional Chaining`),但未通过 Babel 转译。 - **解决**: 1. 在 `webpack.config.js` 中确保 Babel 配置正确: ```javascript module: { rules: [ { test: /\.jsx?$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env', '@babel/preset-react'] } } } ] } ``` --- ### **7. 其他可能性** - **本地代理配置错误**:检查 `webpack-dev-server` 的 `proxy` 设置,确保接口请求转发到正确的后端地址。 - **环境变量未加载**:在 `.env` 文件中定义的变量(如 `API_BASE_URL`)是否已注入前端代码。 - **第三方插件冲突**:禁用浏览器插件(如广告拦截器),测试是否影响登录流程。 --- ### **总结建议** 1. **优先查看控制台错误堆栈**,定位具体代码位置。 2. **关注网络请求状态**,区分前端或后端问题。 3. 若为开发环境问题,尝试重启服务、清除缓存或修复依赖。 4. 若问题持续,提供完整的错误日志和代码片段,便于进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值