[英]C - Bytes of strcmp and String comparison from Array
Thank you in advance for your answer ! 预先感谢您的答复! I wrote a programm which seems probably correct in my opinion but an error occurs in the compiler (about the first line with strcmp) : 我写了一个程序,在我看来这似乎是正确的,但是在编译器中发生错误(关于strcmp的第一行):
"Wrong type: Size of element is 4 bytes, but size of String is 8 bytes." “错误的类型:元素的大小为4个字节,但字符串的大小为8个字节。”
float total_weight_kg(Array weight_array) { // todo: modify header (parameters, parameter types, return type)
float sum = 0;
for (int i = 0; i < a_length(weight_array); i+=2)
{
if( strcmp(get(String, weight_array, (i+1) ), "kg") == 0 ){ sum = sum + get (float, weight_array, (i)) ;}
if( strcmp(get (String, weight_array, (i+1) ), "l") == 0 ){ sum = sum + get (float, weight_array, (i)) ;}
if( strcmp(get (String, weight_array, (i+1) ), "g") == 0 ){ sum = sum + ( get (float, weight_array, (i) )*1000 ) ;}
if( strcmp(get (String, weight_array, (i+1) ), "mg") == 0 ){ sum = sum + ( get (float, weight_array, (i) ) * 1000000 ) ;}
else{printf("Impossible for this case. Unknown unit of measurement.");}
}
return sum;}
Floats are 4-bytes. 浮点数为4字节。 Guessing by your use of the get
function(s), 通过使用get
函数进行猜测,
get(String, weight_array, (i+1) )
the issue is with weight_array
being an array of floats, but the first parameter is doing some executing with a String
type. 问题在于weight_array
是一个浮点数数组,但是第一个参数正在执行一些使用String
类型的执行。
Hence your error, 因此,您的错误
"Wrong type: Size of element is 4 bytes, but size of String is 8 bytes." “错误的类型:元素的大小为4个字节,但字符串的大小为8个字节。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.