我有一個以下測驗用例,我想在谷歌測驗中比較位元組。在 Unity 單元測驗框架中,我們有
TEST_ASSERT_BYTES_EQUAL(0xaa, output[4]);
谷歌測驗中是否有類似的斷言。我在谷歌測驗中有以下代碼并且測驗用例失敗。
TEST(sprintf, NoBufferOverRunsForNoFormatOperations) {
char output[5];
memset(output, 0xaa, sizeof output);
ASSERT_EQ(3, sprintf_s(output, "hey"));
ASSERT_STREQ("hey", output);
ASSERT_THAT(0xaa, output[4]);
}
失敗的日志
[ RUN ] sprintf.NoBufferOverRunsForNoFormatOperations
Value of: 0xaa
Expected: is equal to -86
Actual: 170 (of type int)
[ FAILED ] sprintf.NoBufferOverRunsForNoFormatOperations (0 ms)
歡迎任何線索和幫助。
uj5u.com熱心網友回復:
問題是您正在比較一個型別為十進制 1700xaa的文字,其值本身就是型別。是 C 和 C 中的有符號型別。您將相關位元組寫入或二進制。因為它被解釋為有符號數,所以前導被認為是二進制補碼中的符號位(我認為在 C 20 之前這是未定義的行為),它的值為 -86 = 170 - 256。intoutput[4]charchar0xaa101010101
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/470376.html
上一篇:在Python中測驗修飾函式
