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
在這裏插入圖片描述

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<<NULL<<endl
cout<<0<<endl

3、常量存在靜態區(如全局 int i=1;)堆棧區(子函數內的int i=1;)代碼區(a = (b>c)?1?0)
雙引號括起來的字符串存在,靜態區(全局 char a =“abc”),堆棧區(子函數中的int i=“abc”;)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章