4.chap认证的编写过程

本文探讨了C语言编程中的常见错误及解决方案,包括字符与整数类型转换、位运算注意事项、字符赋值方法等,并分享了实际项目中的调试经验。

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

1.
    char c;
    int i = (int)(c<<8);犯错在于c左移之后什么都没了。正确的是
这样:    int i = ((int)c)<<8;

2.   
    char 的范围是-127~127,如果强制转换一个int,超过范围它将强制转换,
再转换回整数可能就改变了。

3.    给char赋值的时候呢,要注意,有2种方法
    1)、char c = 'a';//直接用单引号,包围符号
    2)、char c = 159;//直接赋整数,是ascii码的下标
    错误用法char c = '/78'没有78这个符号,会截断读取。截取最后一位。

4.char型的变量范围是:-128~127
0 0    1 1     2 2     3 3     4 4     5 5     6 6     7 7     8 8
9 9     10 10   11 11   12 12   13 13   14 14   15 15   16 16
17 17   18 18   19 19   20 20   21 21   22 22   23 23   24 24
25 25   26 26   27 27   28 28   29 29   30 30   31 31   32 32
33 33   34 34   35 35   36 36   37 37   38 38   39 39   40 40
41 41   42 42   43 43   44 44   45 45   46 46   47 47   48 48
49 49   50 50   51 51   52 52   53 53   54 54   55 55   56 56
57 57   58 58   59 59   60 60   61 61   62 62   63 63   64 64
65 65   66 66   67 67   68 68   69 69   70 70   71 71   72 72
73 73   74 74   75 75   76 76   77 77   78 78   79 79   80 80
81 81   82 82   83 83   84 84   85 85   86 86   87 87   88 88
89 89   90 90   91 91   92 92   93 93   94 94   95 95   96 96
97 97   98 98   99 99   100 100 101 101 102 102 103 103 104 104
105 105 106 106 107 107 108 108 109 109 110 110 111 111 112 112
113 113 114 114 115 115 116 116 117 117 118 118 119 119 120 120
121 121 122 122 123 123 124 124 125 125 126 126 127 127 128 -128

129 -127        130 -126        131 -125        132 -124        133 -123
134 -122        135 -121        136 -120
137 -119        138 -118        139 -117        140 -116        141 -115
142 -114        143 -113        144 -112
145 -111        146 -110        147 -109        148 -108        149 -107
150 -106        151 -105        152 -104
153 -103        154 -102        155 -101        156 -100        157 -99 158 -98
159 -97 160 -96
161 -95 162 -94 163 -93 164 -92 165 -91 166 -90 167 -89 168 -88
169 -87 170 -86 171 -85 172 -84 173 -83 174 -82 175 -81 176 -80
177 -79 178 -78 179 -77 180 -76 181 -75 182 -74 183 -73 184 -72
185 -71 186 -70 187 -69 188 -68 189 -67 190 -66 191 -65 192 -64
193 -63 194 -62 195 -61 196 -60 197 -59 198 -58 199 -57 200 -56
201 -55 202 -54 203 -53 204 -52 205 -51 206 -50 207 -49 208 -48
209 -47 210 -46 211 -45 212 -44 213 -43 214 -42 215 -41 216 -40
217 -39 218 -38 219 -37 220 -36 221 -35 222 -34 223 -33 224 -32
225 -31 226 -30 227 -29 228 -28 229 -27 230 -26 231 -25 232 -24
233 -23 234 -22 235 -21 236 -20 237 -19 238 -18 239 -17 240 -16
241 -15 242 -14 243 -13 244 -12 245 -11 246 -10 247 -9  248 -8
249 -7  250 -6  251 -5  252 -4  253 -3  254 -2  255 -1  256 0

5.根据现在的调试可以看出是server第一次发送codes就已经client接收错误了。
    原因:发送错误 || 接收错误
    本质原因:接收的len设置错误,因为我用了sizeof(cps),//cps是指向缓冲区的指针,它的长度显然只是4,所以只能装下前面4字节。
        修改:改为sizeof(recv_codes),//她就是缓冲区,
        结果:还是一样的。
        原因:服务器这边仍然是sizeof(cps),发送的数据就是4字节而已。
    改正之后,发现新错误
6.当生成了10个4字节数据时,接收到的数据少了1字节。
    解决:缓存空间设置是MAX*5,其实最大的应该是MAX*5+1,原因就是设置的协议决定的。

7.调试了很久,同样的数与password异或,在服务器端与在client端的结果就是不同,无语了。
    后面终于看出端倪,原来password设定的不同,server是123456,client是12345

8.调试中遇到一个问题是,某些变量无法显示在“局部变量”窗口,解决办法是,去除工程,新建一个,经过记事本转换过来,去掉原来的所有设置。

9.又是当产生10个数时,sum的结果不同,原因当然是传输到client那边的有所变化,检查发现是buffer太小了,前面更改改错了,MAX*5,但是我是改了MIN = 6;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值