c - 在 C 中增加一个字符
问题描述
我对在 c 中增加一个字符有点不理解。假设:
char c = 'A';
现在,如果我这样做c+1
,价值c
将是'B'
。这可以。但是为什么当我执行以下操作时:
c = c + argv[1][2]
那我'r'
进去了c
为什么?
请假设参数是"in12345"
,则argv[1][2]
等于1
。
我想要做的是一些输入,假设 ABCDEF 是在我以循环方式从参数中接收 BDFHJG 时接收 BDFHJG。但我不明白为什么上述内容对我不起作用。
为什么它不起作用,我该怎么做才能解决它?
解决方案
请假设参数为 in12345,则 argv[1][2] 等于 1。
不,不是。它等于'1'
, 或(假设为 ASCII)49。
'A'
(65) + '3'
(49) = 'r'
(114)
如果1
要从字符中获取整数,则'1'
需要对其进行转换。演员表无济于事;一种方法是使用一些算术魔法:
char c = 'A';
const int valToAdd = argv[1][2] - '0';
c = c + valToAdd;
// c is now 66, or `'B'`
但是,这有点小技巧,如果argv[1][2]
不在 to 范围内'0'
,它将中断'9'
。您可以进一步研究从 ASCII 数字中获取整数的最佳(更好?)方法。
推荐阅读
- c++ - 如何找到最大值和最小值
- python - 奇怪的日期格式转换
- flutter - 如何将一个小部件夹在另一个小部件中?
- python - client.get_asset_balance(asset='BTC') 返回无
- python - 如果 Pandas DataFrame 中的条件 - 检查列是否存在
- c# - 创建数据库 xmla 文件的脚本
- python - 使用 API 调用更新值 - Python
- angular - Angular:Http删除在我的rest api全栈项目中不起作用
- elasticsearch - 弹性搜索不会使集群 UUID
- c# - gmail API使用服务帐户删除电子邮件