peterdrew Vip
Tổng số bài gửi : 55 Join date : 01/03/2010 Age : 41 Đến từ : Weapon Institute
| Tiêu đề: [Thủ thuật C] Swap thông thường và Swap Inline ASM! Wed 30 Jun 2010, 18:53 | |
| Vấn đề Swap là một trong những vấn đề tương đối nổi bật trong C; vậy hôm nay Peter xin post vài bài về cái này cho anh em tham khảo: Trước tiên là Swap thông thường trong C, xem code này nhé: - Code:
-
#include <stdio.h> #include <conio.h>
void swap(int *x, int *y) { int swapInt; swapInt = *x; *x = *y; *y = swapInt; }
int main() { int a, b; printf("Nhap a= "); scanf("%d",&a); printf("Nhap b= "); scanf("%d",&b); printf("%d %d\n", a, b); swap(&a, &b); printf("%d %d", a, b); getch(); return 0; } | |
|
peterdrew Vip
Tổng số bài gửi : 55 Join date : 01/03/2010 Age : 41 Đến từ : Weapon Institute
| Tiêu đề: Re: [Thủ thuật C] Swap thông thường và Swap Inline ASM! Wed 30 Jun 2010, 19:13 | |
| Hoặc Swap như thế này: - Code:
-
void swap(float &a, float &b) { a -= b = -(b -= a += b); } Hoặc kiểu khác: - Code:
-
void swap(int &a, int &b) { a ^= b ^= a ^=b; } Hoặc nếu a, b đều khác 0 thì có thể dùng: - Code:
-
void swap(int &a, int &b) { a /= b = ( a *= b ) / b; } | |
|
peterdrew Vip
Tổng số bài gửi : 55 Join date : 01/03/2010 Age : 41 Đến từ : Weapon Institute
| Tiêu đề: Re: [Thủ thuật C] Swap thông thường và Swap Inline ASM! Wed 30 Jun 2010, 19:16 | |
| Và một cái mà Peter muốn giới thiệu với các bạn là Swap kiểu Inline ASM: - Code:
-
#include <stdio.h> #include <conio.h> int main() { int a, b; printf("Nhap a= "); scanf("%d",&a); printf("Nhap b= "); scanf("%d",&b); printf("%d %d\n", a, b); _asm { mov eax,a mov ebx,b mov a,ebx mov b,eax } printf("%d %d", a, b); getch(); return 0; } Các bạn thử xem có hay không? | |
|
Sponsored content
| Tiêu đề: Re: [Thủ thuật C] Swap thông thường và Swap Inline ASM! | |
| |
|