c语言'65'是单个字符。
这个是转义字符。'\ooo'这样的形式,后面的ooo最少一位,最多3位,且必须是0~7之间的数。
代表着ascii码值是8进制ooo的字符。所以'\65'也就是8进制65对应的ascii码值。即10进制的53,也就是数字'5'。
存储级别关键字:
auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配。与static相反。当变量未指定时默认为auto。(K&R时期引入)。
static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。(K&R时期引入)。
register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。(K&R时期引入)。
extern:指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。(K&R时期引入)。
除以8取余数:65 / 8 商 8 余数 1
8/8 商 1 余数 0
1/8 商0 余数 1
把余数 按 倒转的顺序(即后得的余数放在高位)组合起来,得 101。
另外 也可用 %o 格式 直接输出: printf("%o", 65) 输出 101
65写成二进制也就是01000001按位取反的意思是原来的0变成1,原来的1变成0
转换后也就是
10111110
转换为十进制也就是128+32+16+8+4+2=190
而按照计算机中存储的数据都是1和0来说,计算机是没有负号这一说的,而在计算机中,最高位为1的表示为负数,而10111110也不例外
10111110的负数表示算法为:最高位为符号位,不能计算,计算机中负数都是按照补码的表示的,也就是除第一位外,各位取反,最后加1,各位取反后为:1000001,就是65,加1为65,最后算上第一位的负号为也就是-66