1. 程式人生 > >【protobuf】關於數字alloc邊界的小技巧

【protobuf】關於數字alloc邊界的小技巧

先看一段小程式碼

::std::string* errmsg_;
::google::protobuf::int32 errcode_;

mutable int _cached_size_;
::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];

其中(2+31) / 32是比較有意思的,我們經常會寫如下程式碼:

s = (N / S) + (N % S == 0 ? 0 : 1)

在N是S的整數倍時,不用再加1,非整數倍時都需要再+1

例子這裡的寫法比較巧妙,避免了上述不太優雅的程式碼組織,稍顯囉嗦,直白寫法也無關效能,寫程式碼也是一種藝術,當然也不建議寫非常不容易理解的語法。