关于int数组可以直接和string相互赋值的疑惑?详细见代码,悬赏五元+关

P2730 [USACO3.2] 魔板 Magic Squares

您好,对字符串使用下标运算符,返回的是字符。字符可以类型隐式转换到整数类型。
by only_a_speaker @ 2023-10-26 17:05:12


@[RingTouSou](/user/1034242) C++ 是弱语言,基本所有的类型都可以转换。 我用下面的代码试了一下: ```cpp #include <bits/stdc++.h> using namespace std; int n; string s; signed main() { // freopen(".in","r",stdin); // freopen(".out","w",stdout); while(cin>>n) { s = n; cout<<s<<'\n'; } return 0; } ``` 发现把 `int` 转为 `string` 其实就是把 `int` 的二进制位的后 $8$ 位取出来转为字符,因为输入 `48` 和 `304` 结果应该是一样的。 至于为啥能 A,我也不知道。
by pyy1 @ 2023-10-26 17:07:03


@[only_a_speaker](/user/1154375) 那请问为什么是高精度的时候,a[la-i]=A[i]-'0';就要减掉这个‘0’;什么时候选择使用哪个呢?
by RingTouSou @ 2023-10-26 18:05:56


@[pyy1](/user/581316) 那请问为什么是高精度的时候,a[la-i]=A[i]-'0';就要减掉这个‘0’;什么时候选择使用哪个呢?
by RingTouSou @ 2023-10-26 18:06:53


@[RingTouSou](/user/1034242) 您好,在高精度题目中,需要的不是 `ASCII` 码的值,而是数字的数值。所以需要将字符进行一个线性偏移,得到 `ASCII` 码对应的数字字符的数值。
by only_a_speaker @ 2023-10-26 18:11:41


@[only_a_speaker](/user/1154375) @[only_a_speaker](/user/1154375) 您好,您的意思是这里需要ASCII码的值吗?我没有太理解您的意思。我对这方面了解不是很具体。是重载了运算符的原因吗
by RingTouSou @ 2023-10-26 18:18:09


@[RingTouSou](/user/1034242) 您好,在本题中,这里其实不在乎是 `ASCII` 码的值,还是将 `ASCII` 码偏移后得到的数值。这里在乎的是,字符之间的相等的关系。因为状态只取决于 `string` 的相等,`string` 的相等取决于每个字符的相等,所以只要是按同一种规则来进行解读,就没有区别。 例如,题目中为 `1,2,3,4,5,6,7,8` 。即使变成 `a,b,c,d,e,f,g,h` 也是同一道题。所以不管加不加、见不见、偏移不偏移,都是可行的。
by only_a_speaker @ 2023-10-26 18:37:01


@[only_a_speaker](/user/1154375) 我大概理解了您的想法,还是有点绕。关注已点,需要5元的话可以私信,但是有两个人给您3元可以嘛
by RingTouSou @ 2023-10-26 19:39:34


@[pyy1](/user/581316) 我大概理解了您的想法,还是有点绕。关注已点,需要5元的话可以私信,但是有两个人给您2元可以嘛
by RingTouSou @ 2023-10-26 19:40:02


@[only_a_speaker](/user/1154375) 不需要的话无比感谢您
by RingTouSou @ 2023-10-26 21:36:56


| 下一页