C_and_CPP 板


LINE

开发平台(Platform): (Ex: Win10, Linux, ...) Linux 问题(Question): 我本来以为auto可以这样用,不过这种情况似乎不太适用?? 我想要全程使用auto帮我推导,不过vector的size是unsigned我直接这样用有问题 以我的范例难道我还是只能自己指定j的型态嘛(int) 有比较正确auto的方式嘛??感觉都会推导错误?? 预期的正确结果(Expected Output): test 1 test 0 错误结果(Wrong Output): 无穷回圈 程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档) #include <iostream> #include <vector> using namespace std; int main(){ vector<int> ans = {1,2,3}; auto n = ans.size(); for(auto j = n - 2;j >= 0;--j)//改成int j = n -2就ok { printf("test %ld\n",j); } } ※ 编辑: WangDaMing (36.230.5.115 台湾), 11/02/2021 23:12:51
1F:→ mikemike1021: 因为 auto 会导致他是 unsigned,0-1不会是负数,导 11/02 23:16
2F:→ mikemike1021: 致你的回圈条件永远成立,所以会是无穷回圈 11/02 23:16
3F:→ mikemike1021: 或者你回圈条件也可以改成 j < j + 1 11/02 23:20
4F:→ aiwhat: unsigned 和 signed 变数比较时会转型成 unsigned 11/03 00:38
5F:→ aiwhat: vector::size 回传 unsigned → j = n - 2 也是 unsigned 11/03 00:39
6F:→ peter98: Size() returns unsigned 11/03 03:04
7F:推 chchwy: 自动推导的j是无号数阿 无号数怎麽可能会小於零呢? 11/03 09:54
8F:→ chchwy: 所以你的for loop条件永远都成立 无法离开回圈 11/03 09:55
9F:推 b0920075: 推导错误x 你写错o 11/03 12:59
10F:→ KevinR: 推导错误X 你用错○ 11/03 13:57
11F:→ a27417332: 借串问,好奇对於这种unsigned然後往下数的状况 11/03 15:17
12F:→ a27417332: 通常for里面会怎麽写? 11/03 15:17
13F:→ nh60211as: 不要往下数或是用reverse iterator 11/03 15:43
14F:推 sarafciel: 1.你如果不知道型态 最好不要用auto 11/03 19:45
15F:→ sarafciel: 2. 你如果不知道发生什麽事 最好也不要讲推导错误 11/03 19:46
16F:→ WangDaMing: 感谢以上各位大大~其实我是想问这有没有较好的写法 11/03 23:30
17F:→ WangDaMing: 还是就真的不知道size的型态不要随便用auto...Orz 11/03 23:31
18F:→ ketrobo: 不知道就学一下const iterator,粉好用 11/04 00:01
19F:→ tomsawyer: 我的话 觉得auto拿来接iterator可以少打字 lol 11/04 01:39
20F:推 NciscalA: for_each + reverse iterator 11/04 09:28
21F:→ a27417332: 万一是需要index呢?该不会用rev iter+额外index吧? 11/04 19:46
22F:→ nh60211as: 可以用std::distance 11/04 19:48
23F:推 chchwy: 真的要往下数...就用int啊,不要auto推导就好了 11/05 07:30
24F:→ firejox: 用 c++20 的 ssize https://godbolt.org/z/rbrPfa51d 11/05 10:35
25F:推 steve1012: 不要滥用auto 就解决了 11/05 13:12
26F:→ steve1012: type information很好用 除非真的很有帮助 (e.g. iter 11/05 13:12
27F:→ steve1012: erator type name 很长) 最好都直接写type name 11/05 13:12
28F:推 Dracarys: 它照你打的执行没有错啊 unsigned没问题 推导没有错 11/07 23:45
29F:推 alex780312: 同一行就知道型态时可以auto一下,例如auto ptr =ma 11/09 07:37
30F:→ alex780312: ke_unique<MyClass>(…); 11/09 07:37
31F:→ alex780312: 我是建议不要自己把size_t和unsigned 互换,是长度就 11/09 07:46
32F:→ alex780312: 维持size_t。甚至要用using MyNumber = int;的方式确 11/09 07:46
33F:→ alex780312: 保不会让所有函数都吃最基本形态而看不出是啥东西。 11/09 07:46
34F:→ alex780312: 早起的NULL 变成现在nullptr 也是一个可以学习的例子 11/09 07:46
35F:推 alex780312: 形态名字太长可以用using改善,auto是避免冗余描述, 11/09 07:55
36F:→ alex780312: 例如使用template 时的例子 11/09 07:55
37F:推 Dracarys: 最近看到一本C的书是这样写,一楼也有提到,>=改成<=: 01/11 08:56
38F:→ Dracarys: https://godbolt.org/z/eqec86jTE 01/11 08:56







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP