python和C语言的坑

python的坑

1、pythond的负数存在变量里面时,直接读取该变量并不是补码的形式,需要将其与0xffffffff与操作,才能显示补码
如: n= n& 0xffffffff

2、python 里面没有null,只有None

3、跨平台性和可移植性是不一样的。跨平台是指几乎不用修改就可以在不同的操作系统和硬件上运行,不依赖于操作系统和硬件。可移植性是指经过修改之后可以在其他的平台上运行。

4、string类型的数据是不可修改的,只能索引。要修改的话需要用list()函数转换为list类型。将list转换成string没有库函数,方法如下:
a=’’
for i in range(alist):
a= a+i

5、A == cht(65), 97 = = ord (‘A’)
6、<= , >=,之间不能有空格,否则报错,等于号也是

7、输出两个数的最大值
a,b = (x,y) if (x>y) else (y,x)

8、【题目】输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组,输出a+b的结果。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200407133627143.png
如果没有(0 ,0)结尾或者别的特殊字符作为结尾的话,用C/C++是没办法做的,这能使用python
python和C语言的坑_第1张图片

9、【大数除法】
  python的大数乘法是一点问题都没有的,但是大数除法有坑。大数除法用‘/’还是 '//'区别是很大的。

a = pow(100,10)-1
print(a)  ##结果是99999999999999999999
b=a/99
print(b)  ##结果是1.01010101010101e+18,用科学计数法表示大数,有误差
c=a//99
print(c)  ##结果是1010101010101010101,用整数表示大数,没有误差

C/C++的坑
1、memset(array,0,length);这个函数是按字节进行操作的,一不留神就会出错。
如有int array[10];
len = strlen(array);
memset(array , 0,len );
是不正确的,因为这里只初始化了len个字节而不是len个int。正确应为
memset(array , 0,len*sizeof(int))

2、0和NULL虽然逻辑上不一样,但是输出是一样的。下面两行代码的输出都是0
cout< cout<<0<

3、常量存在静态区(如全局 int i=1;)堆栈区(子函数内的int i=1;)代码区(a = (b>c)?1?0)
双引号括起来的字符串存在,静态区(全局 char a =“abc”),堆栈区(子函数中的int i=“abc”;)

你可能感兴趣的:(python和C语言的坑)