gpt4 book ai didi

objective-c - Obj-C 中的乘法问题

转载 作者:行者123 更新时间:2023-12-02 10:49:58 26 4
gpt4 key购买 nike

我是 Objective-C 的新手,所以如果这在语言中本质上不起作用,请原谅,但它似乎应该这样做。我想要做的是以英寸为单位计算书籍对象的厚度。以下是 Book 中的对象头文件:

NSString *title, *author;
int *numPages;
/**
* The thickness of any given page in the book, in inches (e.g. 20lb stock would be 0.0038)
*/
double *pageThickness;
bool *hasHardCover;

这个想法是,我将通过将(页面厚度和页数的乘积)加上(书籍封面的厚度;如果是硬封面,四分之一英寸,四倍页面)来计算书的厚度厚度,如果是平装本)。但是,我在以下实现中遇到了几个错误:
63 -(int *)calculateWidthInInches
64 {
65 return (((double *)numPages) *
66 pageThickness) +
67 (hasHardCover ? 0.25 :
68 (pageThickness * 4.0));
69 }

以下是错误:
/Users/student4/Downloads/LibraryOfBooks/Book.m:66: error: invalid operands to binary * (have 'double *' and 'double *')
/Users/student4/Downloads/LibraryOfBooks/Book.m:68: error: invalid operands to binary * (have 'double *' and 'double')
/Users/student4/Downloads/LibraryOfBooks/Book.m:69: warning: control reaches end of non-void function

我怀疑最后一个是由于编译返回行失败造成的。 我的 calculateWidthInInches 做错了什么方法?

使固定:
63 -(double)calculateWidthInInches
64 {
65 return ((*numPages) * *pageThickness) + (*hasHardCover ? 0.25 : (*pageThickness * 4.0));
66 }

最佳答案

您所有的变量都是指针,而不是值。编译器提示您试图将指针相乘,这是一个没有意义的操作。

您需要在相乘之前取消引用指针,以便将值相乘,而不是值的地址。

编辑:另外,正如 Yuras 指出的那样,直接转换指针并不是一个好主意——取消引用指针,然后转换值:

-(double)calculateWidthInInches
{
return (((double)*numPages) *
pageThickness) +
(*hasHardCover ? 0.25 :
(*pageThickness * 4.0));
}

关于objective-c - Obj-C 中的乘法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9072243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com