Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
Alex66618
0 / 0 / 0
Регистрация: 22.09.2009
Сообщений: 25
#1

error C2443: конфликт размеров операндов. - C++

20.10.2011, 23:26. Просмотров 2837. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
 
 
int r_y1(int a, int x)
{
    int y0;
 
    _asm
    {
        cmp x,3
            jLE M1
            jG M8
 
M1: cmp x,0
    jGE M2
    jL M3
 
M2: mov AL,x
    jmp M4
 
M3: mov AL,x
    NEG AL
 
M4: cmp a,0
    jGE M5
    jL M6
 
M5: mov BL,a
    jmp M7
 
M6: mov BL,a
    NEG BL
 
M7: ADD AL,BL
    CBW
    CWDE
    mov y0,AX
    jmp M9
 
M8: mov AL,x
    IMUL a
    CWDE
    mov y0,EAX
 
M9: 
    };
    return y0;
 
}
int main()
{
    int a,x, y1;
 
    printf("Enter a: \n");
    scanf("%d",&a);
 
    printf("Enter x: \n");
    scanf("%d",&x);
 
    y1 = r_y2(a,x);
 
    printf("y1 = %d\n",y1);
        
    return 0;
 
}
Помогите пожалуйста, что-то не работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2011, 23:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос error C2443: конфликт размеров операндов. (C++):

Поряд вычисления операндов в операции - C++
Предположим есть такой код: SomeType x = STCreate3() + STCreate1() * STCreate2(); //Все эти функции возвращают объект SomeType Могу...

Несовместимые типы операндов int и char - C++
Всем здравия! Ребят я запарился уже помогите пожалуйста! Учусь в универе необходимо создать БД в с++. Выдает ошибку при вводе &quot;даты...

Порядок вычисления операндов при сложении - C++
Есть такой пример int I = 2, k; k = (I=10)*(I=20); Чему в этом примере равно значение K?? 400, Так как последнее...

Вычислить значение выражения, используя стек операндов - C++
Дано арифметическое выражение длиной до 30 символов, заканчивающееся знаком равенства. Выражение содержит знаки операции +, -, *, / и...

Исправить ошибку в WxDev-C++: Error with debugging process: GDB Error: error, No source file named main.cpp - C++
Здравствуйте товарищи! Новенький я в си, установил wxDev-C++, скомпилировал, запускаешь - работает, а чтоб пошагово отладка - не...

написать логическое выражение , представляющее условие (знаки операций отделять от операндов пробелами): - C++
вопрос: На языке C++ написать логическое выражение , представляющее условие (знаки операций отделять от операндов пробелами): x...

6
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
21.10.2011, 01:04 #2
Alex66618, конкретней, пожалуйста.

1. Что получается.
2. Что должно получиться.
0
Alex66618
0 / 0 / 0
Регистрация: 22.09.2009
Сообщений: 25
21.10.2011, 01:19  [ТС] #3
при компиляции выбивает ошибку error C2443: конфликт размеров операндов.
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,357
Записей в блоге: 2
Завершенные тесты: 1
21.10.2011, 04:04 #4
Цитата Сообщение от Alex66618 Посмотреть сообщение
конфликт размеров операндов.
Assembler
1
mov AL,x
x у тебя int (т.е. скорее всего 4 байта), а регистр AL - 1 байт.
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
21.10.2011, 07:12 #5
Alex66618, у тебя двойнные слова используются в коде С++, так используй 32-битные регистры.
0
Alex66618
0 / 0 / 0
Регистрация: 22.09.2009
Сообщений: 25
21.10.2011, 11:14  [ТС] #6
Та это я уже понял, спасибо))
тут проблемы с подключением объектного файла созданного из-под masm32
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.386
.model flat
public _r_y2@8
.code
_r_y2@8 proc
push EBP
mov EBP,ESP
mov EAX,[EBP+12]
mov ECX,[EBP+8]
cmp ECX,EAX
jE @M1
jNE @M2
@M1: mov EAX,3
jmp @M3
@M2: SUB ECX,EAX
mov EAX,ECX
@M3:
pop EBP
ret 8
_r_y2@8 endp
end
А вот полный код программы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
 
extern "C" int _stdcall sorting(int a, int x);
int r_y1(int a, int x)
{
    int y0;
 
    _asm
    {
        cmp x,3
            jLE M1
            jG M8
    }
M1:
    _asm
    {
    cmp x,0
    jGE M2
    jL M3
    }
M2: 
    _asm
    {
    mov EAX,x
    jmp M4
    }
M3: 
    _asm
    {
    mov EAX,x
    NEG AL
    }
M4: 
    _asm
    {
    cmp a,0
    jGE M5
    jL M6
    }
M5: 
    _asm
    {
    mov EBX,a
    jmp M7
    }
M6: 
    _asm
    {
    mov EBX,a
    NEG EBX
    }
M7: 
    _asm
    {
    ADD EAX,EBX
    mov y0,EAX
    jmp M9
    }
M8: 
    _asm
    {
    mov EAX,x
    IMUL a
    CWDE
    mov y0,EAX
    }
M9: 
    _asm
    {
    }
    return y0;
 
}
int main()
{
    int a,x, y1, y2, y;
 
    printf("Enter a: \n");
    scanf("%d",&a);
 
    printf("Enter x: \n");
    scanf("%d",&x);
 
    y1 = r_y1(a,x);
 
    printf("y1 = %d\n",y1);
 
    y2=sorting(a,x);
 
    printf("y2 = %d\n",y2);
 
    y = y1 + y2;
 
    printf("y = %d\n",y);
 
    getch();
    return 0;
 
}
Добавлено через 14 минут
в кодах разные имена функций -это пробовал просто, но код все равно не работает.

Добавлено через 41 минуту
"C:\masm32\bin\a"
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: C:\masm32\bin\a.asm
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
a.exe : fatal error LNK1120: 1 unresolved externals
_
Link error

Ошибка при ассемблировании и линковке
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
21.10.2011, 23:23 #7
Alex66618, судя по сообщению об ошибке, вы создали проект не того вида?
Код - это Win32 Console Application, а сообщение об ошибке - Win32. Ы?
0
21.10.2011, 23:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2011, 23:23
Привет! Вот еще темы с ответами:

Error LNK1120, error LNK2019, error LNK2028, queue - C++
// свойство класса Parser queue&lt;elem*&gt;* postfix = new queue&lt;elem*&gt;; // строка, из-за которой происходит ошибка ...

Ошибка: отсутствует оператор >>,соответствующий этим операндам типы операндов: std::ostream>>const double - C++
Помогите или объясните в чем моя ошибка?? Вот программный код! заголовочный файл #ifndef _ZAGFILE_H_ #define _ZAGFILE_H_ #include...

Ошибка в тестовом примере: "Error 1 error C2143: syntax error : missing ';' before 'if'" - C++
#include&lt;iostream&gt; using namespace std; int main(){ int x, a = 0, b = 10; (cin &gt;&gt; x).get(); while (x){ int c = x % 10; ...

Конфликт жесткого диска и привода. Ошибка "I/O error. Press any key to reboot" - Windows XP
Устанавливаю WinXP. После копирования файлов на жесткий диск происходит положенная перезагрузка после которой нужно загрузиться с HDD. Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru