day11鹏哥C语言-操作符(关系,逻辑,条件)

再理一下逻辑思路,我们这些操作符都是针对的是补码,对补码进行操作,操作完之后,然后-1,然后取反,得到原码,因为最后输出的就是原码

(重要)这道题可以这么去理解,比如你有一个13,也就是图中的第一行二进制位(任意什么数字都可以),比如你想要将倒数第二位给取1,就a|=(1<<1),比如你想要给第五位取1,就a|=(1<<4),所以找到规律了吗,想要让几号取1,就对应给到n-1,比如说第n位取1,就a|=(1<<n-1)

这题的意思就是,比如你现在是29,你想要倒数第五位变为0,则只需要与(且)一个第二行所示,就可以得到想要的结果,那么第二行所示的东西,怎么得到呢,就是第五行给它取反就行,也就是1向左移4,和上面的例子相同,当你想要将n位的数字,从1改到0时候,只需要将按位且上一个(1<<n-1),然后再取反

这个就很容易了

当你在定义一个函数的时候,也可以带入a--,对于i++,++i,放在内置里面是无所谓的



强制类型转化

这两者的区别

指针不管什么类型,都是四个字节

比较两个字符串用strcmp

只要不是0,就默认是真,这个没啥好说的,一个是且,一个是或

1,2,3,4

2,2,3,4
只要有一个1,就行,所以最后两个不执行
没啥好说的

用法,对于倒数第二行代码,当你满足条件时,整个表达式为3,不满足,整个表达式为-3

真正起到作用的是最后一个表达式 13


和之前讲过的一样啊,arr指的是地址,地址进行++,进行+1,什么的,就会指向第八个元素,然后加个✳,就是指向的是元素
整型提升



由于是char类型,所以是八个比特位,很明显已经不够了,所以需要整型提升,根据它的符号位进行整型提升,也就是上面所示,正数则全加0,两者相加即可,获得后八位

所以看到后八位是以1为符号位,前面全补成1,然后此时可得其补码,然后求出原码就行,因为printf求得的都是原码,所以要转换
